diff --git a/examples/amoeba/bitorsion.ubiquitin.data b/examples/amoeba/bitorsion.ubiquitin.data new file mode 100644 index 0000000000..5a59e1a16e --- /dev/null +++ b/examples/amoeba/bitorsion.ubiquitin.data @@ -0,0 +1,1884 @@ +Tinker BiTorsion parameter file for fix bitorsion + +3 bitorsion types + +1 25 25 + -180.0 -180.0 0.98936 + -165.0 -180.0 0.76408 + -150.0 -180.0 0.21674 + -135.0 -180.0 -0.182 + -120.0 -180.0 -0.37729 + -105.0 -180.0 -0.47834 + -90.0 -180.0 -0.59267 + -75.0 -180.0 -0.93985 + -60.0 -180.0 -1.55558 + -45.0 -180.0 -2.01849 + -30.0 -180.0 -1.94076 + -15.0 -180.0 -1.464 + 0.0 -180.0 0.18253 + 15.0 -180.0 -0.80364 + 30.0 -180.0 -1.32974 + 45.0 -180.0 -1.31658 + 60.0 -180.0 -0.5014 + 75.0 -180.0 0.20431 + 90.0 -180.0 0.39356 + 105.0 -180.0 0.20356 + 120.0 -180.0 -0.16993 + 135.0 -180.0 -0.22733 + 150.0 -180.0 0.13703 + 165.0 -180.0 0.66356 + 180.0 -180.0 0.98936 + -180.0 -165.0 0.96101 + -165.0 -165.0 0.37535 + -150.0 -165.0 -0.35733 + -135.0 -165.0 -0.69994 + -120.0 -165.0 -0.67298 + -105.0 -165.0 -0.58294 + -90.0 -165.0 -0.66465 + -75.0 -165.0 -1.02945 + -60.0 -165.0 -1.72427 + -45.0 -165.0 -2.19357 + -30.0 -165.0 -2.26378 + -15.0 -165.0 -1.7385 + 0.0 -165.0 -0.80969 + 15.0 -165.0 -1.16164 + 30.0 -165.0 -1.62772 + 45.0 -165.0 -1.51932 + 60.0 -165.0 -0.62569 + 75.0 -165.0 0.1313 + 90.0 -165.0 0.41019 + 105.0 -165.0 0.32974 + 120.0 -165.0 0.19191 + 135.0 -165.0 0.3232 + 150.0 -165.0 0.68257 + 165.0 -165.0 1.03015 + 180.0 -165.0 0.96101 + -180.0 -150.0 0.72651 + -165.0 -150.0 -0.04361 + -150.0 -150.0 -0.78147 + -135.0 -150.0 -0.90703 + -120.0 -150.0 -0.65095 + -105.0 -150.0 -0.48165 + -90.0 -150.0 -0.59657 + -75.0 -150.0 -1.14449 + -60.0 -150.0 -1.75396 + -45.0 -150.0 -2.279 + -30.0 -150.0 -2.14873 + -15.0 -150.0 -0.26757 + 0.0 -150.0 -0.77578 + 15.0 -150.0 -1.30595 + 30.0 -150.0 -1.79607 + 45.0 -150.0 -1.55982 + 60.0 -150.0 -0.57905 + 75.0 -150.0 0.30576 + 90.0 -150.0 0.70711 + 105.0 -150.0 0.68903 + 120.0 -150.0 0.53594 + 135.0 -150.0 0.60304 + 150.0 -150.0 0.88805 + 165.0 -150.0 0.9972 + 180.0 -150.0 0.72651 + -180.0 -135.0 0.155 + -165.0 -135.0 -0.20013 + -150.0 -135.0 -0.7966 + -135.0 -135.0 -0.74958 + -120.0 -135.0 -0.43624 + -105.0 -135.0 -0.36715 + -90.0 -135.0 -0.58938 + -75.0 -135.0 -0.99698 + -60.0 -135.0 -1.59208 + -45.0 -135.0 -1.67026 + -30.0 -135.0 0.50672 + -15.0 -135.0 -0.03293 + 0.0 -135.0 -0.84501 + 15.0 -135.0 -1.52731 + 30.0 -135.0 -1.89898 + 45.0 -135.0 -1.54469 + 60.0 -135.0 -0.53752 + 75.0 -135.0 0.40003 + 90.0 -135.0 0.88952 + 105.0 -135.0 0.8215 + 120.0 -135.0 0.58663 + 135.0 -135.0 0.56781 + 150.0 -135.0 0.74002 + 165.0 -135.0 0.84486 + 180.0 -135.0 0.155 + -180.0 -120.0 0.34021 + -165.0 -120.0 -0.20306 + -150.0 -120.0 -0.62787 + -135.0 -120.0 -0.55418 + -120.0 -120.0 -0.38986 + -105.0 -120.0 -0.44533 + -90.0 -120.0 -0.60179 + -75.0 -120.0 -0.93351 + -60.0 -120.0 -1.09198 + -45.0 -120.0 -0.18408 + -30.0 -120.0 1.24545 + -15.0 -120.0 -0.24279 + 0.0 -120.0 -1.24581 + 15.0 -120.0 -1.76363 + 30.0 -120.0 -1.8081 + 45.0 -120.0 -1.40319 + 60.0 -120.0 -0.63233 + 75.0 -120.0 0.15411 + 90.0 -120.0 0.5864 + 105.0 -120.0 0.51937 + 120.0 -120.0 0.25822 + 135.0 -120.0 0.13668 + 150.0 -120.0 0.23659 + 165.0 -120.0 0.46899 + 180.0 -120.0 0.34021 + -180.0 -105.0 -0.15437 + -165.0 -105.0 -0.1406 + -150.0 -105.0 -0.54321 + -135.0 -105.0 -0.58112 + -120.0 -105.0 -0.64967 + -105.0 -105.0 -0.71916 + -90.0 -105.0 -0.78801 + -75.0 -105.0 -0.76163 + -60.0 -105.0 -0.33401 + -45.0 -105.0 0.9172 + -30.0 -105.0 0.65423 + -15.0 -105.0 -0.84456 + 0.0 -105.0 -1.63476 + 15.0 -105.0 -1.65992 + 30.0 -105.0 -1.33178 + 45.0 -105.0 -1.08999 + 60.0 -105.0 -0.74243 + 75.0 -105.0 -0.33157 + 90.0 -105.0 -0.20618 + 105.0 -105.0 -0.07103 + 120.0 -105.0 -0.25941 + 135.0 -105.0 -0.37634 + 150.0 -105.0 -0.12892 + 165.0 -105.0 0.19386 + 180.0 -105.0 -0.15437 + -180.0 -90.0 0.4463 + -165.0 -90.0 0.02406 + -150.0 -90.0 -0.42821 + -135.0 -90.0 -0.76736 + -120.0 -90.0 -0.93537 + -105.0 -90.0 -0.86621 + -90.0 -90.0 -0.66178 + -75.0 -90.0 -0.23513 + -60.0 -90.0 0.41508 + -45.0 -90.0 0.97897 + -30.0 -90.0 -0.30358 + -15.0 -90.0 -1.42025 + 0.0 -90.0 -1.62146 + 15.0 -90.0 -0.98816 + 30.0 -90.0 -0.58148 + 45.0 -90.0 -0.49791 + 60.0 -90.0 -0.32045 + 75.0 -90.0 -0.39639 + 90.0 -90.0 -0.94422 + 105.0 -90.0 -0.74539 + 120.0 -90.0 -0.60241 + 135.0 -90.0 -0.56295 + 150.0 -90.0 -0.15877 + 165.0 -90.0 0.33609 + 180.0 -90.0 0.4463 + -180.0 -75.0 0.69562 + -165.0 -75.0 0.16403 + -150.0 -75.0 -0.43627 + -135.0 -75.0 -0.79169 + -120.0 -75.0 -0.80743 + -105.0 -75.0 -0.48767 + -90.0 -75.0 0.12397 + -75.0 -75.0 0.80972 + -60.0 -75.0 0.52616 + -45.0 -75.0 -0.13884 + -30.0 -75.0 -1.08459 + -15.0 -75.0 -1.556 + 0.0 -75.0 -1.12531 + 15.0 -75.0 -0.19831 + 30.0 -75.0 -0.00344 + 45.0 -75.0 0.01061 + 60.0 -75.0 0.11066 + 75.0 -75.0 -0.12406 + 90.0 -75.0 -0.8198 + 105.0 -75.0 -1.04369 + 120.0 -75.0 -0.62525 + 135.0 -75.0 -0.37223 + 150.0 -75.0 0.09012 + 165.0 -75.0 0.58855 + 180.0 -75.0 0.69562 + -180.0 -60.0 0.70531 + -165.0 -60.0 0.15456 + -150.0 -60.0 -0.40882 + -135.0 -60.0 -0.57653 + -120.0 -60.0 -0.20146 + -105.0 -60.0 0.21285 + -90.0 -60.0 0.15007 + -75.0 -60.0 0.06572 + -60.0 -60.0 -0.22861 + -45.0 -60.0 -0.75313 + -30.0 -60.0 -1.17725 + -15.0 -60.0 -1.0704 + 0.0 -60.0 -0.29306 + 15.0 -60.0 0.11777 + 30.0 -60.0 0.42905 + 45.0 -60.0 0.53679 + 60.0 -60.0 0.52038 + 75.0 -60.0 0.27617 + 90.0 -60.0 -0.36078 + 105.0 -60.0 -0.66569 + 120.0 -60.0 -0.35068 + 135.0 -60.0 -0.13164 + 150.0 -60.0 0.27666 + 165.0 -60.0 0.70865 + 180.0 -60.0 0.70531 + -180.0 -45.0 0.42237 + -165.0 -45.0 -0.14148 + -150.0 -45.0 -0.50856 + -135.0 -45.0 -0.14423 + -120.0 -45.0 -0.53339 + -105.0 -45.0 -0.514 + -90.0 -45.0 -0.3329 + -75.0 -45.0 -0.24488 + -60.0 -45.0 -0.32054 + -45.0 -45.0 -0.40379 + -30.0 -45.0 -0.41006 + -15.0 -45.0 -0.23372 + 0.0 -45.0 0.07185 + 15.0 -45.0 0.70729 + 30.0 -45.0 1.16881 + 45.0 -45.0 1.23276 + 60.0 -45.0 0.77518 + 75.0 -45.0 0.5197 + 90.0 -45.0 -0.12956 + 105.0 -45.0 -0.24028 + 120.0 -45.0 -0.08791 + 135.0 -45.0 0.02315 + 150.0 -45.0 0.32774 + 165.0 -45.0 0.5533 + 180.0 -45.0 0.42237 + -180.0 -30.0 0.127 + -165.0 -30.0 -0.36697 + -150.0 -30.0 -0.33178 + -135.0 -30.0 -1.09856 + -120.0 -30.0 -1.01098 + -105.0 -30.0 -0.6178 + -90.0 -30.0 -0.18232 + -75.0 -30.0 0.14143 + -60.0 -30.0 0.40819 + -45.0 -30.0 0.50556 + -30.0 -30.0 0.34379 + -15.0 -30.0 0.31224 + 0.0 -30.0 0.97008 + 15.0 -30.0 1.70616 + 30.0 -30.0 1.99942 + 45.0 -30.0 1.79196 + 60.0 -30.0 1.26978 + 75.0 -30.0 0.65732 + 90.0 -30.0 0.04223 + 105.0 -30.0 0.22658 + 120.0 -30.0 0.08209 + 135.0 -30.0 0.05525 + 150.0 -30.0 0.22382 + 165.0 -30.0 0.33964 + 180.0 -30.0 0.127 + -180.0 -15.0 -0.06517 + -165.0 -15.0 -0.13598 + -150.0 -15.0 -1.30614 + -135.0 -15.0 -1.09555 + -120.0 -15.0 -0.64991 + -105.0 -15.0 -0.06482 + -90.0 -15.0 0.49509 + -75.0 -15.0 0.92103 + -60.0 -15.0 1.94755 + -45.0 -15.0 0.95164 + -30.0 -15.0 0.8787 + -15.0 -15.0 1.42479 + 0.0 -15.0 2.06338 + 15.0 -15.0 2.50243 + 30.0 -15.0 2.59266 + 45.0 -15.0 2.02131 + 60.0 -15.0 1.26236 + 75.0 -15.0 0.65759 + 90.0 -15.0 0.60601 + 105.0 -15.0 0.40777 + 120.0 -15.0 0.08605 + 135.0 -15.0 -0.02333 + 150.0 -15.0 0.06947 + 165.0 -15.0 0.13044 + 180.0 -15.0 -0.06517 + -180.0 0.0 -1.44412 + -165.0 0.0 -1.37206 + -150.0 0.0 -0.97055 + -135.0 0.0 -0.54692 + -120.0 0.0 -0.04768 + -105.0 0.0 0.65462 + -90.0 0.0 1.09803 + -75.0 0.0 1.4118 + -60.0 0.0 1.23685 + -45.0 0.0 1.32368 + -30.0 0.0 1.83555 + -15.0 0.0 2.29146 + 0.0 0.0 2.61632 + 15.0 0.0 2.73204 + 30.0 0.0 2.49607 + 45.0 0.0 1.76205 + 60.0 0.0 1.23208 + 75.0 0.0 1.11843 + 90.0 0.0 1.50389 + 105.0 0.0 0.20088 + 120.0 0.0 -0.22667 + 135.0 0.0 -0.38306 + 150.0 0.0 -0.27813 + 165.0 0.0 -0.08165 + 180.0 0.0 -1.44412 + -180.0 15.0 -1.54337 + -165.0 15.0 -0.94875 + -150.0 15.0 -0.4463 + -135.0 15.0 -0.06444 + -120.0 15.0 0.39675 + -105.0 15.0 0.90513 + -90.0 15.0 1.24019 + -75.0 15.0 1.18954 + -60.0 15.0 1.36753 + -45.0 15.0 1.8229 + -30.0 15.0 2.22229 + -15.0 15.0 2.44694 + 0.0 15.0 2.44244 + 15.0 15.0 2.26164 + 30.0 15.0 1.85516 + 45.0 15.0 1.56722 + 60.0 15.0 1.43193 + 75.0 15.0 0.71918 + 90.0 15.0 0.14053 + 105.0 15.0 -0.36429 + 120.0 15.0 -0.76466 + 135.0 15.0 -0.87217 + 150.0 15.0 -0.57197 + 165.0 15.0 -1.61569 + 180.0 15.0 -1.54337 + -180.0 30.0 -1.09485 + -165.0 30.0 -0.56681 + -150.0 30.0 -0.13387 + -135.0 30.0 0.19412 + -120.0 30.0 0.57374 + -105.0 30.0 0.86366 + -90.0 30.0 0.80314 + -75.0 30.0 1.08125 + -60.0 30.0 1.39143 + -45.0 30.0 1.86048 + -30.0 30.0 2.01491 + -15.0 30.0 2.03904 + 0.0 30.0 1.77856 + 15.0 30.0 1.48754 + 30.0 30.0 1.53762 + 45.0 30.0 1.22766 + 60.0 30.0 0.55347 + 75.0 30.0 -0.06469 + 90.0 30.0 -0.47099 + 105.0 30.0 -0.82958 + 120.0 30.0 -1.01883 + 135.0 30.0 -0.75479 + 150.0 30.0 -1.39221 + 165.0 30.0 -1.55942 + 180.0 30.0 -1.09485 + -180.0 45.0 -0.55882 + -165.0 45.0 -0.22825 + -150.0 45.0 0.01795 + -135.0 45.0 0.21896 + -120.0 45.0 0.49238 + -105.0 45.0 0.39403 + -90.0 45.0 0.4887 + -75.0 45.0 0.90318 + -60.0 45.0 1.0673 + -45.0 45.0 1.40576 + -30.0 45.0 1.504 + -15.0 45.0 1.39328 + 0.0 45.0 1.13519 + 15.0 45.0 1.11176 + 30.0 45.0 0.55506 + 45.0 45.0 0.04408 + 60.0 45.0 -0.2593 + 75.0 45.0 -0.42888 + 90.0 45.0 -0.51963 + 105.0 45.0 -0.55634 + 120.0 45.0 -0.25212 + 135.0 45.0 -0.62098 + 150.0 45.0 -1.22694 + 165.0 45.0 -1.05054 + 180.0 45.0 -0.55882 + -180.0 60.0 -0.18285 + -165.0 60.0 -0.0865 + -150.0 60.0 0.00476 + -135.0 60.0 0.11545 + -120.0 60.0 0.16266 + -105.0 60.0 0.01161 + -90.0 60.0 0.39632 + -75.0 60.0 0.75519 + -60.0 60.0 0.96557 + -45.0 60.0 0.9764 + -30.0 60.0 0.97745 + -15.0 60.0 0.97978 + 0.0 60.0 0.79555 + 15.0 60.0 -0.15675 + 30.0 60.0 -0.51647 + 45.0 60.0 -0.39418 + 60.0 60.0 -0.15303 + 75.0 60.0 -0.008 + 90.0 60.0 0.09982 + 105.0 60.0 0.37002 + 120.0 60.0 0.12378 + 135.0 60.0 -0.63827 + 150.0 60.0 -0.59589 + 165.0 60.0 -0.38041 + 180.0 60.0 -0.18285 + -180.0 75.0 -0.066 + -165.0 75.0 -0.07528 + -150.0 75.0 -0.04119 + -135.0 75.0 -0.07933 + -120.0 75.0 -0.19424 + -105.0 75.0 -0.27213 + -90.0 75.0 0.0 + -75.0 75.0 0.40627 + -60.0 75.0 0.67141 + -45.0 75.0 0.48954 + -30.0 75.0 0.49392 + -15.0 75.0 0.53926 + 0.0 75.0 -0.43613 + 15.0 75.0 -0.91296 + 30.0 75.0 -0.57046 + 45.0 75.0 0.20602 + 60.0 75.0 0.66426 + 75.0 75.0 0.78486 + 90.0 75.0 0.83638 + 105.0 75.0 0.47569 + 120.0 75.0 -0.24156 + 135.0 75.0 -0.36935 + 150.0 75.0 -0.03276 + 165.0 75.0 -0.00079 + 180.0 75.0 -0.066 + -180.0 90.0 -0.19813 + -165.0 90.0 -0.18275 + -150.0 90.0 -0.13564 + -135.0 90.0 -0.16443 + -120.0 90.0 -0.25121 + -105.0 90.0 -0.36588 + -90.0 90.0 -0.30532 + -75.0 90.0 -0.05335 + -60.0 90.0 -0.11065 + -45.0 90.0 -0.24703 + -30.0 90.0 -0.35383 + -15.0 90.0 -0.66704 + 0.0 90.0 -1.22785 + 15.0 90.0 -0.99837 + 30.0 90.0 0.07165 + 45.0 90.0 1.1709 + 60.0 90.0 1.52568 + 75.0 90.0 1.19212 + 90.0 90.0 0.65821 + 105.0 90.0 0.07691 + 120.0 90.0 -0.25244 + 135.0 90.0 -0.10611 + 150.0 90.0 0.09358 + 165.0 90.0 0.00731 + 180.0 90.0 -0.19813 + -180.0 105.0 -0.3485 + -165.0 105.0 -0.15035 + -150.0 105.0 -0.40367 + -135.0 105.0 -0.01197 + -120.0 105.0 -0.061 + -105.0 105.0 -0.1519 + -90.0 105.0 -0.31715 + -75.0 105.0 -0.62391 + -60.0 105.0 -0.90231 + -45.0 105.0 -1.37607 + -30.0 105.0 -1.62179 + -15.0 105.0 -1.73579 + 0.0 105.0 -1.64875 + 15.0 105.0 -0.75542 + 30.0 105.0 0.71157 + 45.0 105.0 1.26356 + 60.0 105.0 0.7596 + 75.0 105.0 0.594 + 90.0 105.0 0.30667 + 105.0 105.0 -0.06284 + 120.0 105.0 -0.20456 + 135.0 105.0 -0.08836 + 150.0 105.0 -0.1659 + 165.0 105.0 -0.35505 + 180.0 105.0 -0.3485 + -180.0 120.0 -0.34576 + -165.0 120.0 0.02576 + -150.0 120.0 0.27228 + -135.0 120.0 0.28454 + -120.0 120.0 0.18375 + -105.0 120.0 0.01398 + -90.0 120.0 -0.27455 + -75.0 120.0 -0.7758 + -60.0 120.0 -1.42554 + -45.0 120.0 -1.99064 + -30.0 120.0 -2.37393 + -15.0 120.0 -2.20009 + 0.0 120.0 -1.60683 + 15.0 120.0 -0.44372 + 30.0 120.0 1.09513 + 45.0 120.0 0.35522 + 60.0 120.0 -0.04151 + 75.0 120.0 0.17766 + 90.0 120.0 0.14305 + 105.0 120.0 -0.13472 + 120.0 120.0 -0.31725 + 135.0 120.0 -0.458 + 150.0 120.0 -0.64821 + 165.0 120.0 -0.63355 + 180.0 120.0 -0.34576 + -180.0 135.0 -0.08457 + -165.0 135.0 0.36013 + -150.0 135.0 0.54446 + -135.0 135.0 0.48098 + -120.0 135.0 0.27776 + -105.0 135.0 0.02335 + -90.0 135.0 -0.28766 + -75.0 135.0 -0.80414 + -60.0 135.0 -1.5133 + -45.0 135.0 -2.20028 + -30.0 135.0 -2.36835 + -15.0 135.0 -2.12483 + 0.0 135.0 -1.376 + 15.0 135.0 -0.25291 + 30.0 135.0 0.78641 + 45.0 135.0 -0.96321 + 60.0 135.0 -0.57499 + 75.0 135.0 -0.00398 + 90.0 135.0 0.08668 + 105.0 135.0 -0.17475 + 120.0 135.0 -0.55212 + 135.0 135.0 -0.94225 + 150.0 135.0 -1.01661 + 165.0 135.0 -0.69656 + 180.0 135.0 -0.08457 + -180.0 150.0 0.2851 + -165.0 150.0 0.66185 + -150.0 150.0 0.69665 + -135.0 150.0 0.48378 + -120.0 150.0 0.16399 + -105.0 150.0 -0.09637 + -90.0 150.0 -0.36878 + -75.0 150.0 -0.80945 + -60.0 150.0 -1.41793 + -45.0 150.0 -2.18914 + -30.0 150.0 -2.20786 + -15.0 150.0 -1.82363 + 0.0 150.0 -1.11629 + 15.0 150.0 -0.04735 + 30.0 150.0 -1.17126 + 45.0 150.0 -1.34899 + 60.0 150.0 -0.62467 + 75.0 150.0 0.05642 + 90.0 150.0 0.17332 + 105.0 150.0 -0.14673 + 120.0 150.0 -0.698 + 135.0 150.0 -1.11306 + 150.0 150.0 -1.02621 + 165.0 150.0 -0.41495 + 180.0 150.0 0.2851 + -180.0 165.0 0.76902 + -165.0 165.0 0.89311 + -150.0 165.0 0.59358 + -135.0 165.0 0.25887 + -120.0 165.0 -0.03955 + -105.0 165.0 -0.24006 + -90.0 165.0 -0.46456 + -75.0 165.0 -0.8317 + -60.0 165.0 -1.40143 + -45.0 165.0 -1.95471 + -30.0 165.0 -2.00388 + -15.0 165.0 -1.56184 + 0.0 165.0 -0.83182 + 15.0 165.0 -0.45132 + 30.0 165.0 -1.23096 + 45.0 165.0 -1.2265 + 60.0 165.0 -0.44761 + 75.0 165.0 0.25891 + 90.0 165.0 0.39936 + 105.0 165.0 0.0765 + 120.0 165.0 -0.49787 + 135.0 165.0 -0.79017 + 150.0 165.0 -0.50914 + 165.0 165.0 0.18602 + 180.0 165.0 0.76902 + -180.0 180.0 0.98936 + -165.0 180.0 0.76408 + -150.0 180.0 0.21674 + -135.0 180.0 -0.182 + -120.0 180.0 -0.37729 + -105.0 180.0 -0.47834 + -90.0 180.0 -0.59267 + -75.0 180.0 -0.93985 + -60.0 180.0 -1.55558 + -45.0 180.0 -2.01849 + -30.0 180.0 -1.94076 + -15.0 180.0 -1.464 + 0.0 180.0 0.18253 + 15.0 180.0 -0.80364 + 30.0 180.0 -1.32974 + 45.0 180.0 -1.31658 + 60.0 180.0 -0.5014 + 75.0 180.0 0.20431 + 90.0 180.0 0.39356 + 105.0 180.0 0.20356 + 120.0 180.0 -0.16993 + 135.0 180.0 -0.22733 + 150.0 180.0 0.13703 + 165.0 180.0 0.66356 + 180.0 180.0 0.98936 + +2 25 25 + -180.0 -180.0 0.0 + -165.0 -180.0 -0.15918 + -150.0 -180.0 -0.46924 + -135.0 -180.0 -0.94887 + -120.0 -180.0 -1.41919 + -105.0 -180.0 -1.89608 + -90.0 -180.0 -2.35024 + -75.0 -180.0 -2.81648 + -60.0 -180.0 -3.17758 + -45.0 -180.0 -2.91092 + -30.0 -180.0 -1.84916 + -15.0 -180.0 -0.61868 + 0.0 -180.0 1.44957 + 15.0 -180.0 -0.61868 + 30.0 -180.0 -1.84916 + 45.0 -180.0 -2.91092 + 60.0 -180.0 -3.17758 + 75.0 -180.0 -2.81793 + 90.0 -180.0 -2.34954 + 105.0 -180.0 -1.91578 + 120.0 -180.0 -1.41919 + 135.0 -180.0 -0.94887 + 150.0 -180.0 -0.46924 + 165.0 -180.0 -0.15918 + 180.0 -180.0 0.0 + -180.0 -165.0 -0.03043 + -165.0 -165.0 -0.40282 + -150.0 -165.0 -0.84288 + -135.0 -165.0 -1.22723 + -120.0 -165.0 -1.58634 + -105.0 -165.0 -1.98317 + -90.0 -165.0 -2.46682 + -75.0 -165.0 -2.96238 + -60.0 -165.0 -3.27921 + -45.0 -165.0 -2.85897 + -30.0 -165.0 -1.66034 + -15.0 -165.0 0.28654 + 0.0 -165.0 0.47583 + 15.0 -165.0 -0.59328 + 30.0 -165.0 -1.85441 + 45.0 -165.0 -2.72832 + 60.0 -165.0 -2.82977 + 75.0 -165.0 -2.4375 + 90.0 -165.0 -1.97978 + 105.0 -165.0 -1.47132 + 120.0 -165.0 -0.94989 + 135.0 -165.0 -0.44166 + 150.0 -165.0 -0.04055 + 165.0 -165.0 0.10146 + 180.0 -165.0 -0.03043 + -180.0 -150.0 -0.05487 + -165.0 -150.0 -0.49639 + -150.0 -150.0 -0.83418 + -135.0 -150.0 -1.02443 + -120.0 -150.0 -1.24614 + -105.0 -150.0 -1.65671 + -90.0 -150.0 -2.17397 + -75.0 -150.0 -2.73078 + -60.0 -150.0 -2.95919 + -45.0 -150.0 -2.36553 + -30.0 -150.0 -0.65594 + -15.0 -150.0 1.60921 + 0.0 -150.0 0.68197 + 15.0 -150.0 -0.47503 + 30.0 -150.0 -1.60792 + 45.0 -150.0 -2.28172 + 60.0 -150.0 -2.27657 + 75.0 -150.0 -1.84368 + 90.0 -150.0 -1.32072 + 105.0 -150.0 -0.79693 + 120.0 -150.0 -0.27502 + 135.0 -150.0 0.15792 + 150.0 -150.0 0.37394 + 165.0 -150.0 0.30007 + 180.0 -150.0 -0.05487 + -180.0 -135.0 0.22137 + -165.0 -135.0 -0.11507 + -150.0 -135.0 -0.25069 + -135.0 -135.0 -0.2512 + -120.0 -135.0 -0.45372 + -105.0 -135.0 -0.91494 + -90.0 -135.0 -1.48283 + -75.0 -135.0 -1.97985 + -60.0 -135.0 -1.99291 + -45.0 -135.0 -0.87317 + -30.0 -135.0 2.15102 + -15.0 -135.0 2.08125 + 0.0 -135.0 1.01469 + 15.0 -135.0 -0.13409 + 30.0 -135.0 -1.08446 + 45.0 -135.0 -1.57764 + 60.0 -135.0 -1.54005 + 75.0 -135.0 -1.11846 + 90.0 -135.0 -0.54882 + 105.0 -135.0 -0.14353 + 120.0 -135.0 0.35059 + 135.0 -135.0 0.78961 + 150.0 -135.0 0.82176 + 165.0 -135.0 0.599 + 180.0 -135.0 0.22137 + -180.0 -120.0 0.76282 + -165.0 -120.0 0.65049 + -150.0 -120.0 0.73226 + -135.0 -120.0 0.80302 + -120.0 -120.0 0.46767 + -105.0 -120.0 -0.17578 + -90.0 -120.0 -0.55868 + -75.0 -120.0 -0.87022 + -60.0 -120.0 -0.44624 + -45.0 -120.0 1.42775 + -30.0 -120.0 3.49117 + -15.0 -120.0 2.47433 + 0.0 -120.0 1.4066 + 15.0 -120.0 0.51132 + 30.0 -120.0 -0.07964 + 45.0 -120.0 -0.49787 + 60.0 -120.0 -0.64487 + 75.0 -120.0 -0.35755 + 90.0 -120.0 0.18803 + 105.0 -120.0 0.5455 + 120.0 -120.0 0.97289 + 135.0 -120.0 1.16949 + 150.0 -120.0 1.1591 + 165.0 -120.0 1.05012 + 180.0 -120.0 0.76282 + -180.0 -105.0 1.42827 + -165.0 -105.0 1.50406 + -150.0 -105.0 1.72284 + -135.0 -105.0 1.64917 + -120.0 -105.0 1.03764 + -105.0 -105.0 0.56475 + -90.0 -105.0 0.20084 + -75.0 -105.0 0.20821 + -60.0 -105.0 1.22814 + -45.0 -105.0 2.98189 + -30.0 -105.0 3.57647 + -15.0 -105.0 2.65211 + 0.0 -105.0 1.95317 + 15.0 -105.0 1.65224 + 30.0 -105.0 1.43567 + 45.0 -105.0 0.92486 + 60.0 -105.0 0.55065 + 75.0 -105.0 0.46027 + 90.0 -105.0 0.6047 + 105.0 -105.0 1.02077 + 120.0 -105.0 1.33189 + 135.0 -105.0 1.51499 + 150.0 -105.0 1.50886 + 165.0 -105.0 1.53133 + 180.0 -105.0 1.42827 + -180.0 -90.0 1.90401 + -165.0 -90.0 2.03939 + -150.0 -90.0 2.29924 + -135.0 -90.0 1.79055 + -120.0 -90.0 1.3528 + -105.0 -90.0 1.02391 + -90.0 -90.0 0.90562 + -75.0 -90.0 1.23397 + -60.0 -90.0 2.45075 + -45.0 -90.0 3.45522 + -30.0 -90.0 3.09983 + -15.0 -90.0 2.62493 + 0.0 -90.0 2.65047 + 15.0 -90.0 3.09474 + 30.0 -90.0 2.79428 + 45.0 -90.0 2.15793 + 60.0 -90.0 1.57482 + 75.0 -90.0 1.3331 + 90.0 -90.0 1.13012 + 105.0 -90.0 1.17449 + 120.0 -90.0 1.41199 + 135.0 -90.0 1.62671 + 150.0 -90.0 1.81755 + 165.0 -90.0 1.82118 + 180.0 -90.0 1.90401 + -180.0 -75.0 1.80621 + -165.0 -75.0 2.0808 + -150.0 -75.0 2.03556 + -135.0 -75.0 1.68691 + -120.0 -75.0 1.29208 + -105.0 -75.0 1.22509 + -90.0 -75.0 1.43311 + -75.0 -75.0 2.16375 + -60.0 -75.0 2.1732 + -45.0 -75.0 2.21268 + -30.0 -75.0 2.13049 + -15.0 -75.0 2.40205 + 0.0 -75.0 3.24329 + 15.0 -75.0 4.06613 + 30.0 -75.0 3.57523 + 45.0 -75.0 2.86443 + 60.0 -75.0 2.31976 + 75.0 -75.0 1.66472 + 90.0 -75.0 1.27852 + 105.0 -75.0 1.09103 + 120.0 -75.0 1.36656 + 135.0 -75.0 1.53314 + 150.0 -75.0 1.59747 + 165.0 -75.0 1.64225 + 180.0 -75.0 1.80621 + -180.0 -60.0 0.94133 + -165.0 -60.0 1.07716 + -150.0 -60.0 1.06365 + -135.0 -60.0 0.96211 + -120.0 -60.0 0.94411 + -105.0 -60.0 1.25994 + -90.0 -60.0 0.79628 + -75.0 -60.0 0.57562 + -60.0 -60.0 0.56577 + -45.0 -60.0 0.74572 + -30.0 -60.0 1.24745 + -15.0 -60.0 2.21612 + 0.0 -60.0 3.54214 + 15.0 -60.0 3.78367 + 30.0 -60.0 3.4012 + 45.0 -60.0 2.89718 + 60.0 -60.0 1.94715 + 75.0 -60.0 1.36042 + 90.0 -60.0 0.7925 + 105.0 -60.0 0.57769 + 120.0 -60.0 0.77935 + 135.0 -60.0 0.79351 + 150.0 -60.0 0.75367 + 165.0 -60.0 0.78581 + 180.0 -60.0 0.94133 + -180.0 -45.0 -0.67275 + -165.0 -45.0 -0.59212 + -150.0 -45.0 -0.422 + -135.0 -45.0 -0.01106 + -120.0 -45.0 -0.5147 + -105.0 -45.0 -0.80922 + -90.0 -45.0 -0.99538 + -75.0 -45.0 -1.0643 + -60.0 -45.0 -0.87844 + -45.0 -45.0 -0.24576 + -30.0 -45.0 0.77634 + -15.0 -45.0 2.05251 + 0.0 -45.0 2.78505 + 15.0 -45.0 3.13379 + 30.0 -45.0 2.85045 + 45.0 -45.0 2.19151 + 60.0 -45.0 1.16243 + 75.0 -45.0 0.2072 + 90.0 -45.0 -0.42237 + 105.0 -45.0 -0.4646 + 120.0 -45.0 -0.38665 + 135.0 -45.0 -0.55232 + 150.0 -45.0 -0.67078 + 165.0 -45.0 -0.6783 + 180.0 -45.0 -0.67275 + -180.0 -30.0 -2.46944 + -165.0 -30.0 -2.32595 + -150.0 -30.0 -1.71439 + -135.0 -30.0 -2.48703 + -120.0 -30.0 -2.56054 + -105.0 -30.0 -2.46215 + -90.0 -30.0 -2.37111 + -75.0 -30.0 -2.19037 + -60.0 -30.0 -1.62432 + -45.0 -30.0 -0.7237 + -30.0 -30.0 0.35895 + -15.0 -30.0 1.35947 + 0.0 -30.0 2.12358 + 15.0 -30.0 2.36496 + 30.0 -30.0 1.96636 + 45.0 -30.0 1.05275 + 60.0 -30.0 -0.26183 + 75.0 -30.0 -1.16368 + 90.0 -30.0 -1.65442 + 105.0 -30.0 -1.64196 + 120.0 -30.0 -1.86484 + 135.0 -30.0 -2.09366 + 150.0 -30.0 -2.28268 + 165.0 -30.0 -2.41932 + 180.0 -30.0 -2.46944 + -180.0 -15.0 -3.82546 + -165.0 -15.0 -3.22967 + -150.0 -15.0 -3.93518 + -135.0 -15.0 -3.85949 + -120.0 -15.0 -3.58321 + -105.0 -15.0 -3.28549 + -90.0 -15.0 -3.01617 + -75.0 -15.0 -2.60005 + -60.0 -15.0 -1.92147 + -45.0 -15.0 -1.14234 + -30.0 -15.0 -0.00873 + -15.0 -15.0 1.14445 + 0.0 -15.0 1.77335 + 15.0 -15.0 1.79047 + 30.0 -15.0 1.09507 + 45.0 -15.0 -0.16297 + 60.0 -15.0 -1.43516 + 75.0 -15.0 -2.26699 + 90.0 -15.0 -2.45933 + 105.0 -15.0 -2.70542 + 120.0 -15.0 -3.03929 + 135.0 -15.0 -3.35545 + 150.0 -15.0 -3.62364 + 165.0 -15.0 -3.79758 + 180.0 -15.0 -3.82546 + -180.0 0.0 -3.8299 + -165.0 0.0 -4.37645 + -150.0 0.0 -4.29456 + -135.0 0.0 -4.01846 + -120.0 0.0 -3.66843 + -105.0 0.0 -3.3124 + -90.0 0.0 -2.96646 + -75.0 0.0 -2.58028 + -60.0 0.0 -2.08554 + -45.0 0.0 -0.9905 + -30.0 0.0 0.42261 + -15.0 0.0 1.35374 + 0.0 0.0 1.69885 + 15.0 0.0 1.35374 + 30.0 0.0 0.42261 + 45.0 0.0 -1.0031 + 60.0 0.0 -2.08554 + 75.0 0.0 -2.58028 + 90.0 0.0 -2.96646 + 105.0 0.0 -3.3124 + 120.0 0.0 -3.66843 + 135.0 0.0 -4.01846 + 150.0 0.0 -4.29456 + 165.0 0.0 -4.37645 + 180.0 0.0 -3.8299 + -180.0 15.0 -3.82546 + -165.0 15.0 -3.79758 + -150.0 15.0 -3.62364 + -135.0 15.0 -3.35545 + -120.0 15.0 -3.03929 + -105.0 15.0 -2.70542 + -90.0 15.0 -2.45933 + -75.0 15.0 -2.26699 + -60.0 15.0 -1.43516 + -45.0 15.0 -0.16297 + -30.0 15.0 1.09507 + -15.0 15.0 1.79047 + 0.0 15.0 1.77335 + 15.0 15.0 1.14445 + 30.0 15.0 -0.00873 + 45.0 15.0 -1.14234 + 60.0 15.0 -1.92147 + 75.0 15.0 -2.60005 + 90.0 15.0 -3.01617 + 105.0 15.0 -3.28549 + 120.0 15.0 -3.58321 + 135.0 15.0 -3.85949 + 150.0 15.0 -3.93518 + 165.0 15.0 -3.23037 + 180.0 15.0 -3.82546 + -180.0 30.0 -2.46944 + -165.0 30.0 -2.41932 + -150.0 30.0 -2.28268 + -135.0 30.0 -2.09366 + -120.0 30.0 -1.86484 + -105.0 30.0 -1.64196 + -90.0 30.0 -1.65442 + -75.0 30.0 -1.16368 + -60.0 30.0 -0.26183 + -45.0 30.0 1.05275 + -30.0 30.0 1.96636 + -15.0 30.0 2.36496 + 0.0 30.0 2.12358 + 15.0 30.0 1.35947 + 30.0 30.0 0.35055 + 45.0 30.0 -0.7237 + 60.0 30.0 -1.62432 + 75.0 30.0 -2.19037 + 90.0 30.0 -2.37111 + 105.0 30.0 -2.46215 + 120.0 30.0 -2.56054 + 135.0 30.0 -2.48703 + 150.0 30.0 -1.70729 + 165.0 30.0 -2.32595 + 180.0 30.0 -2.46944 + -180.0 45.0 -0.67275 + -165.0 45.0 -0.6783 + -150.0 45.0 -0.67078 + -135.0 45.0 -0.55232 + -120.0 45.0 -0.38665 + -105.0 45.0 -0.4646 + -90.0 45.0 -0.42237 + -75.0 45.0 0.2072 + -60.0 45.0 1.16243 + -45.0 45.0 2.19151 + -30.0 45.0 2.85045 + -15.0 45.0 3.13379 + 0.0 45.0 2.78505 + 15.0 45.0 2.06071 + 30.0 45.0 0.77634 + 45.0 45.0 -0.24576 + 60.0 45.0 -0.87844 + 75.0 45.0 -1.0643 + 90.0 45.0 -0.99538 + 105.0 45.0 -0.80922 + 120.0 45.0 -0.5147 + 135.0 45.0 -0.01106 + 150.0 45.0 -0.422 + 165.0 45.0 -0.59212 + 180.0 45.0 -0.67275 + -180.0 60.0 0.94133 + -165.0 60.0 0.78581 + -150.0 60.0 0.75367 + -135.0 60.0 0.79351 + -120.0 60.0 0.77935 + -105.0 60.0 0.57769 + -90.0 60.0 0.7925 + -75.0 60.0 1.36042 + -60.0 60.0 1.94715 + -45.0 60.0 2.89718 + -30.0 60.0 3.4012 + -15.0 60.0 3.78367 + 0.0 60.0 3.54214 + 15.0 60.0 2.19742 + 30.0 60.0 1.24745 + 45.0 60.0 0.74572 + 60.0 60.0 0.56577 + 75.0 60.0 0.57562 + 90.0 60.0 0.79628 + 105.0 60.0 1.25994 + 120.0 60.0 0.94411 + 135.0 60.0 0.96211 + 150.0 60.0 1.06365 + 165.0 60.0 1.07716 + 180.0 60.0 0.94133 + -180.0 75.0 1.80621 + -165.0 75.0 1.64225 + -150.0 75.0 1.59747 + -135.0 75.0 1.53314 + -120.0 75.0 1.36656 + -105.0 75.0 1.09103 + -90.0 75.0 1.27852 + -75.0 75.0 1.66472 + -60.0 75.0 2.31976 + -45.0 75.0 2.86443 + -30.0 75.0 3.57523 + -15.0 75.0 4.06613 + 0.0 75.0 3.24329 + 15.0 75.0 2.40295 + 30.0 75.0 2.13049 + 45.0 75.0 2.21268 + 60.0 75.0 2.1732 + 75.0 75.0 2.16375 + 90.0 75.0 1.43311 + 105.0 75.0 1.22509 + 120.0 75.0 1.29208 + 135.0 75.0 1.68691 + 150.0 75.0 2.03556 + 165.0 75.0 2.0808 + 180.0 75.0 1.80621 + -180.0 90.0 1.90401 + -165.0 90.0 1.82118 + -150.0 90.0 1.81755 + -135.0 90.0 1.62671 + -120.0 90.0 1.41199 + -105.0 90.0 1.17449 + -90.0 90.0 1.13012 + -75.0 90.0 1.3331 + -60.0 90.0 1.57482 + -45.0 90.0 2.15793 + -30.0 90.0 2.79428 + -15.0 90.0 3.09474 + 0.0 90.0 2.65047 + 15.0 90.0 2.62493 + 30.0 90.0 3.09673 + 45.0 90.0 3.45522 + 60.0 90.0 2.45075 + 75.0 90.0 1.23397 + 90.0 90.0 0.90562 + 105.0 90.0 1.02391 + 120.0 90.0 1.3528 + 135.0 90.0 1.79055 + 150.0 90.0 2.29924 + 165.0 90.0 2.03939 + 180.0 90.0 1.90401 + -180.0 105.0 1.42827 + -165.0 105.0 1.53133 + -150.0 105.0 1.50886 + -135.0 105.0 1.51499 + -120.0 105.0 1.33189 + -105.0 105.0 1.02077 + -90.0 105.0 0.6047 + -75.0 105.0 0.46027 + -60.0 105.0 0.55065 + -45.0 105.0 0.92486 + -30.0 105.0 1.43567 + -15.0 105.0 1.65224 + 0.0 105.0 1.95317 + 15.0 105.0 2.65211 + 30.0 105.0 3.58847 + 45.0 105.0 2.98189 + 60.0 105.0 1.22814 + 75.0 105.0 0.20821 + 90.0 105.0 0.20084 + 105.0 105.0 0.56475 + 120.0 105.0 1.03764 + 135.0 105.0 1.64917 + 150.0 105.0 1.72204 + 165.0 105.0 1.50406 + 180.0 105.0 1.42827 + -180.0 120.0 0.76282 + -165.0 120.0 1.05012 + -150.0 120.0 1.1591 + -135.0 120.0 1.16949 + -120.0 120.0 0.97289 + -105.0 120.0 0.5455 + -90.0 120.0 0.18803 + -75.0 120.0 -0.35755 + -60.0 120.0 -0.64487 + -45.0 120.0 -0.49787 + -30.0 120.0 -0.07964 + -15.0 120.0 0.51132 + 0.0 120.0 1.4066 + 15.0 120.0 2.47433 + 30.0 120.0 3.49117 + 45.0 120.0 1.42775 + 60.0 120.0 -0.44624 + 75.0 120.0 -0.87022 + 90.0 120.0 -0.55868 + 105.0 120.0 -0.17578 + 120.0 120.0 0.46767 + 135.0 120.0 0.80302 + 150.0 120.0 0.73536 + 165.0 120.0 0.65049 + 180.0 120.0 0.76282 + -180.0 135.0 0.22137 + -165.0 135.0 0.599 + -150.0 135.0 0.82176 + -135.0 135.0 0.78961 + -120.0 135.0 0.35059 + -105.0 135.0 -0.14353 + -90.0 135.0 -0.54882 + -75.0 135.0 -1.11846 + -60.0 135.0 -1.54005 + -45.0 135.0 -1.57764 + -30.0 135.0 -1.08446 + -15.0 135.0 -0.13409 + 0.0 135.0 1.01469 + 15.0 135.0 2.08125 + 30.0 135.0 2.15102 + 45.0 135.0 -0.87317 + 60.0 135.0 -1.99291 + 75.0 135.0 -1.97985 + 90.0 135.0 -1.48283 + 105.0 135.0 -0.91494 + 120.0 135.0 -0.45372 + 135.0 135.0 -0.2512 + 150.0 135.0 -0.25069 + 165.0 135.0 -0.11507 + 180.0 135.0 0.22137 + -180.0 150.0 -0.05487 + -165.0 150.0 0.30007 + -150.0 150.0 0.37394 + -135.0 150.0 0.15792 + -120.0 150.0 -0.27502 + -105.0 150.0 -0.79693 + -90.0 150.0 -1.32072 + -75.0 150.0 -1.85418 + -60.0 150.0 -2.27657 + -45.0 150.0 -2.28172 + -30.0 150.0 -1.60792 + -15.0 150.0 -0.47503 + 0.0 150.0 0.68197 + 15.0 150.0 1.60921 + 30.0 150.0 -0.65594 + 45.0 150.0 -2.36553 + 60.0 150.0 -2.95919 + 75.0 150.0 -2.73078 + 90.0 150.0 -2.17397 + 105.0 150.0 -1.65041 + 120.0 150.0 -1.25474 + 135.0 150.0 -1.02443 + 150.0 150.0 -0.83418 + 165.0 150.0 -0.49639 + 180.0 150.0 -0.05487 + -180.0 165.0 -0.03043 + -165.0 165.0 0.10146 + -150.0 165.0 -0.04055 + -135.0 165.0 -0.44166 + -120.0 165.0 -0.94989 + -105.0 165.0 -1.47132 + -90.0 165.0 -1.96898 + -75.0 165.0 -2.4591 + -60.0 165.0 -2.82977 + -45.0 165.0 -2.72832 + -30.0 165.0 -1.85441 + -15.0 165.0 -0.59328 + 0.0 165.0 0.47583 + 15.0 165.0 0.28654 + 30.0 165.0 -1.66034 + 45.0 165.0 -2.85897 + 60.0 165.0 -3.27921 + 75.0 165.0 -2.96238 + 90.0 165.0 -2.44752 + 105.0 165.0 -1.99117 + 120.0 165.0 -1.60564 + 135.0 165.0 -1.22723 + 150.0 165.0 -0.84288 + 165.0 165.0 -0.40282 + 180.0 165.0 -0.03043 + -180.0 180.0 0.0 + -165.0 180.0 -0.15918 + -150.0 180.0 -0.46924 + -135.0 180.0 -0.94887 + -120.0 180.0 -1.41919 + -105.0 180.0 -1.89608 + -90.0 180.0 -2.35024 + -75.0 180.0 -2.81648 + -60.0 180.0 -3.17758 + -45.0 180.0 -2.91092 + -30.0 180.0 -1.84916 + -15.0 180.0 -0.61868 + 0.0 180.0 1.44957 + 15.0 180.0 -0.61868 + 30.0 180.0 -1.84916 + 45.0 180.0 -2.91092 + 60.0 180.0 -3.17758 + 75.0 180.0 -2.81793 + 90.0 180.0 -2.34954 + 105.0 180.0 -1.91578 + 120.0 180.0 -1.41919 + 135.0 180.0 -0.94887 + 150.0 180.0 -0.46924 + 165.0 180.0 -0.15918 + 180.0 180.0 0.0 + +3 25 25 + -180.0 -180.0 0.98936 + -165.0 -180.0 0.76408 + -150.0 -180.0 0.21674 + -135.0 -180.0 -0.182 + -120.0 -180.0 -0.37729 + -105.0 -180.0 -0.47834 + -90.0 -180.0 -0.59267 + -75.0 -180.0 -0.93985 + -60.0 -180.0 -1.55558 + -45.0 -180.0 -2.01849 + -30.0 -180.0 -1.94076 + -15.0 -180.0 -1.464 + 0.0 -180.0 0.18253 + 15.0 -180.0 -0.80364 + 30.0 -180.0 -1.32974 + 45.0 -180.0 -1.31658 + 60.0 -180.0 -0.5014 + 75.0 -180.0 0.20431 + 90.0 -180.0 0.39356 + 105.0 -180.0 0.20356 + 120.0 -180.0 -0.16993 + 135.0 -180.0 -0.22733 + 150.0 -180.0 0.13703 + 165.0 -180.0 0.66356 + 180.0 -180.0 0.98936 + -180.0 -165.0 0.96101 + -165.0 -165.0 0.37535 + -150.0 -165.0 -0.35733 + -135.0 -165.0 -0.69994 + -120.0 -165.0 -0.67298 + -105.0 -165.0 -0.58294 + -90.0 -165.0 -0.66465 + -75.0 -165.0 -1.02945 + -60.0 -165.0 -1.72427 + -45.0 -165.0 -2.19357 + -30.0 -165.0 -2.26378 + -15.0 -165.0 -1.7385 + 0.0 -165.0 -0.80969 + 15.0 -165.0 -1.16164 + 30.0 -165.0 -1.62772 + 45.0 -165.0 -1.51932 + 60.0 -165.0 -0.62569 + 75.0 -165.0 0.1313 + 90.0 -165.0 0.41019 + 105.0 -165.0 0.32974 + 120.0 -165.0 0.19191 + 135.0 -165.0 0.3232 + 150.0 -165.0 0.68257 + 165.0 -165.0 1.03015 + 180.0 -165.0 0.96101 + -180.0 -150.0 0.72651 + -165.0 -150.0 -0.04361 + -150.0 -150.0 -0.78147 + -135.0 -150.0 -0.90703 + -120.0 -150.0 -0.65095 + -105.0 -150.0 -0.48165 + -90.0 -150.0 -0.59657 + -75.0 -150.0 -1.14449 + -60.0 -150.0 -1.75396 + -45.0 -150.0 -2.279 + -30.0 -150.0 -2.14873 + -15.0 -150.0 -0.26757 + 0.0 -150.0 -0.77578 + 15.0 -150.0 -1.30595 + 30.0 -150.0 -1.79607 + 45.0 -150.0 -1.55982 + 60.0 -150.0 -0.57905 + 75.0 -150.0 0.30576 + 90.0 -150.0 0.70711 + 105.0 -150.0 0.68903 + 120.0 -150.0 0.53594 + 135.0 -150.0 0.60304 + 150.0 -150.0 0.88805 + 165.0 -150.0 0.9972 + 180.0 -150.0 0.72651 + -180.0 -135.0 0.155 + -165.0 -135.0 -0.20013 + -150.0 -135.0 -0.7966 + -135.0 -135.0 -0.74958 + -120.0 -135.0 -0.43624 + -105.0 -135.0 -0.36715 + -90.0 -135.0 -0.58938 + -75.0 -135.0 -0.99698 + -60.0 -135.0 -1.59208 + -45.0 -135.0 -1.67026 + -30.0 -135.0 0.50672 + -15.0 -135.0 -0.03293 + 0.0 -135.0 -0.84501 + 15.0 -135.0 -1.52731 + 30.0 -135.0 -1.89898 + 45.0 -135.0 -1.54469 + 60.0 -135.0 -0.53752 + 75.0 -135.0 0.40003 + 90.0 -135.0 0.88952 + 105.0 -135.0 0.8215 + 120.0 -135.0 0.58663 + 135.0 -135.0 0.56781 + 150.0 -135.0 0.74002 + 165.0 -135.0 0.84486 + 180.0 -135.0 0.155 + -180.0 -120.0 0.34021 + -165.0 -120.0 -0.20306 + -150.0 -120.0 -0.62787 + -135.0 -120.0 -0.55418 + -120.0 -120.0 -0.38986 + -105.0 -120.0 -0.44533 + -90.0 -120.0 -0.60179 + -75.0 -120.0 -0.93351 + -60.0 -120.0 -1.09198 + -45.0 -120.0 -0.18408 + -30.0 -120.0 1.24545 + -15.0 -120.0 -0.24279 + 0.0 -120.0 -1.24581 + 15.0 -120.0 -1.76363 + 30.0 -120.0 -1.8081 + 45.0 -120.0 -1.40319 + 60.0 -120.0 -0.63233 + 75.0 -120.0 0.15411 + 90.0 -120.0 0.5864 + 105.0 -120.0 0.51937 + 120.0 -120.0 0.25822 + 135.0 -120.0 0.13668 + 150.0 -120.0 0.23659 + 165.0 -120.0 0.46899 + 180.0 -120.0 0.34021 + -180.0 -105.0 -0.15437 + -165.0 -105.0 -0.1406 + -150.0 -105.0 -0.54321 + -135.0 -105.0 -0.58112 + -120.0 -105.0 -0.64967 + -105.0 -105.0 -0.71916 + -90.0 -105.0 -0.78801 + -75.0 -105.0 -0.76163 + -60.0 -105.0 -0.33401 + -45.0 -105.0 0.9172 + -30.0 -105.0 0.65423 + -15.0 -105.0 -0.84456 + 0.0 -105.0 -1.63476 + 15.0 -105.0 -1.65992 + 30.0 -105.0 -1.33178 + 45.0 -105.0 -1.08999 + 60.0 -105.0 -0.74243 + 75.0 -105.0 -0.33157 + 90.0 -105.0 -0.20618 + 105.0 -105.0 -0.07103 + 120.0 -105.0 -0.25941 + 135.0 -105.0 -0.37634 + 150.0 -105.0 -0.12892 + 165.0 -105.0 0.19386 + 180.0 -105.0 -0.15437 + -180.0 -90.0 0.4463 + -165.0 -90.0 0.02406 + -150.0 -90.0 -0.42821 + -135.0 -90.0 -0.76736 + -120.0 -90.0 -0.93537 + -105.0 -90.0 -0.86621 + -90.0 -90.0 -0.66178 + -75.0 -90.0 -0.23513 + -60.0 -90.0 0.41508 + -45.0 -90.0 0.97897 + -30.0 -90.0 -0.30358 + -15.0 -90.0 -1.42025 + 0.0 -90.0 -1.62146 + 15.0 -90.0 -0.98816 + 30.0 -90.0 -0.58148 + 45.0 -90.0 -0.49791 + 60.0 -90.0 -0.32045 + 75.0 -90.0 -0.39639 + 90.0 -90.0 -0.94422 + 105.0 -90.0 -0.74539 + 120.0 -90.0 -0.60241 + 135.0 -90.0 -0.56295 + 150.0 -90.0 -0.15877 + 165.0 -90.0 0.33609 + 180.0 -90.0 0.4463 + -180.0 -75.0 0.69562 + -165.0 -75.0 0.16403 + -150.0 -75.0 -0.43627 + -135.0 -75.0 -0.79169 + -120.0 -75.0 -0.80743 + -105.0 -75.0 -0.48767 + -90.0 -75.0 0.12397 + -75.0 -75.0 0.80972 + -60.0 -75.0 0.52616 + -45.0 -75.0 -0.13884 + -30.0 -75.0 -1.08459 + -15.0 -75.0 -1.556 + 0.0 -75.0 -1.12531 + 15.0 -75.0 -0.19831 + 30.0 -75.0 -0.00344 + 45.0 -75.0 0.01061 + 60.0 -75.0 0.11066 + 75.0 -75.0 -0.12406 + 90.0 -75.0 -0.8198 + 105.0 -75.0 -1.04369 + 120.0 -75.0 -0.62525 + 135.0 -75.0 -0.37223 + 150.0 -75.0 0.09012 + 165.0 -75.0 0.58855 + 180.0 -75.0 0.69562 + -180.0 -60.0 0.70531 + -165.0 -60.0 0.15456 + -150.0 -60.0 -0.40882 + -135.0 -60.0 -0.57653 + -120.0 -60.0 -0.20146 + -105.0 -60.0 0.21285 + -90.0 -60.0 0.15007 + -75.0 -60.0 0.06572 + -60.0 -60.0 -0.22861 + -45.0 -60.0 -0.75313 + -30.0 -60.0 -1.17725 + -15.0 -60.0 -1.0704 + 0.0 -60.0 -0.29306 + 15.0 -60.0 0.11777 + 30.0 -60.0 0.42905 + 45.0 -60.0 0.53679 + 60.0 -60.0 0.52038 + 75.0 -60.0 0.27617 + 90.0 -60.0 -0.36078 + 105.0 -60.0 -0.66569 + 120.0 -60.0 -0.35068 + 135.0 -60.0 -0.13164 + 150.0 -60.0 0.27666 + 165.0 -60.0 0.70865 + 180.0 -60.0 0.70531 + -180.0 -45.0 0.42237 + -165.0 -45.0 -0.14148 + -150.0 -45.0 -0.50856 + -135.0 -45.0 -0.14423 + -120.0 -45.0 -0.53339 + -105.0 -45.0 -0.514 + -90.0 -45.0 -0.3329 + -75.0 -45.0 -0.24488 + -60.0 -45.0 -0.32054 + -45.0 -45.0 -0.40379 + -30.0 -45.0 -0.41006 + -15.0 -45.0 -0.23372 + 0.0 -45.0 0.07185 + 15.0 -45.0 0.70729 + 30.0 -45.0 1.16881 + 45.0 -45.0 1.23276 + 60.0 -45.0 0.77518 + 75.0 -45.0 0.5197 + 90.0 -45.0 -0.12956 + 105.0 -45.0 -0.24028 + 120.0 -45.0 -0.08791 + 135.0 -45.0 0.02315 + 150.0 -45.0 0.32774 + 165.0 -45.0 0.5533 + 180.0 -45.0 0.42237 + -180.0 -30.0 0.127 + -165.0 -30.0 -0.36697 + -150.0 -30.0 -0.33178 + -135.0 -30.0 -1.09856 + -120.0 -30.0 -1.01098 + -105.0 -30.0 -0.6178 + -90.0 -30.0 -0.18232 + -75.0 -30.0 0.14143 + -60.0 -30.0 0.40819 + -45.0 -30.0 0.50556 + -30.0 -30.0 0.34379 + -15.0 -30.0 0.31224 + 0.0 -30.0 0.97008 + 15.0 -30.0 1.70616 + 30.0 -30.0 1.99942 + 45.0 -30.0 1.79196 + 60.0 -30.0 1.26978 + 75.0 -30.0 0.65732 + 90.0 -30.0 0.04223 + 105.0 -30.0 0.22658 + 120.0 -30.0 0.08209 + 135.0 -30.0 0.05525 + 150.0 -30.0 0.22382 + 165.0 -30.0 0.33964 + 180.0 -30.0 0.127 + -180.0 -15.0 -0.06517 + -165.0 -15.0 -0.13598 + -150.0 -15.0 -1.30614 + -135.0 -15.0 -1.09555 + -120.0 -15.0 -0.64991 + -105.0 -15.0 -0.06482 + -90.0 -15.0 0.49509 + -75.0 -15.0 0.92103 + -60.0 -15.0 1.94755 + -45.0 -15.0 0.95164 + -30.0 -15.0 0.8787 + -15.0 -15.0 1.42479 + 0.0 -15.0 2.06338 + 15.0 -15.0 2.50243 + 30.0 -15.0 2.59266 + 45.0 -15.0 2.02131 + 60.0 -15.0 1.26236 + 75.0 -15.0 0.65759 + 90.0 -15.0 0.60601 + 105.0 -15.0 0.40777 + 120.0 -15.0 0.08605 + 135.0 -15.0 -0.02333 + 150.0 -15.0 0.06947 + 165.0 -15.0 0.13044 + 180.0 -15.0 -0.06517 + -180.0 0.0 -1.44412 + -165.0 0.0 -1.37206 + -150.0 0.0 -0.97055 + -135.0 0.0 -0.54692 + -120.0 0.0 -0.04768 + -105.0 0.0 0.65462 + -90.0 0.0 1.09803 + -75.0 0.0 1.4118 + -60.0 0.0 1.23685 + -45.0 0.0 1.32368 + -30.0 0.0 1.83555 + -15.0 0.0 2.29146 + 0.0 0.0 2.61632 + 15.0 0.0 2.73204 + 30.0 0.0 2.49607 + 45.0 0.0 1.76205 + 60.0 0.0 1.23208 + 75.0 0.0 1.11843 + 90.0 0.0 1.50389 + 105.0 0.0 0.20088 + 120.0 0.0 -0.22667 + 135.0 0.0 -0.38306 + 150.0 0.0 -0.27813 + 165.0 0.0 -0.08165 + 180.0 0.0 -1.44412 + -180.0 15.0 -1.54337 + -165.0 15.0 -0.94875 + -150.0 15.0 -0.4463 + -135.0 15.0 -0.06444 + -120.0 15.0 0.39675 + -105.0 15.0 0.90513 + -90.0 15.0 1.24019 + -75.0 15.0 1.18954 + -60.0 15.0 1.36753 + -45.0 15.0 1.8229 + -30.0 15.0 2.22229 + -15.0 15.0 2.44694 + 0.0 15.0 2.44244 + 15.0 15.0 2.26164 + 30.0 15.0 1.85516 + 45.0 15.0 1.56722 + 60.0 15.0 1.43193 + 75.0 15.0 0.71918 + 90.0 15.0 0.14053 + 105.0 15.0 -0.36429 + 120.0 15.0 -0.76466 + 135.0 15.0 -0.87217 + 150.0 15.0 -0.57197 + 165.0 15.0 -1.61569 + 180.0 15.0 -1.54337 + -180.0 30.0 -1.09485 + -165.0 30.0 -0.56681 + -150.0 30.0 -0.13387 + -135.0 30.0 0.19412 + -120.0 30.0 0.57374 + -105.0 30.0 0.86366 + -90.0 30.0 0.80314 + -75.0 30.0 1.08125 + -60.0 30.0 1.39143 + -45.0 30.0 1.86048 + -30.0 30.0 2.01491 + -15.0 30.0 2.03904 + 0.0 30.0 1.77856 + 15.0 30.0 1.48754 + 30.0 30.0 1.53762 + 45.0 30.0 1.22766 + 60.0 30.0 0.55347 + 75.0 30.0 -0.06469 + 90.0 30.0 -0.47099 + 105.0 30.0 -0.82958 + 120.0 30.0 -1.01883 + 135.0 30.0 -0.75479 + 150.0 30.0 -1.39221 + 165.0 30.0 -1.55942 + 180.0 30.0 -1.09485 + -180.0 45.0 -0.55882 + -165.0 45.0 -0.22825 + -150.0 45.0 0.01795 + -135.0 45.0 0.21896 + -120.0 45.0 0.49238 + -105.0 45.0 0.39403 + -90.0 45.0 0.4887 + -75.0 45.0 0.90318 + -60.0 45.0 1.0673 + -45.0 45.0 1.40576 + -30.0 45.0 1.504 + -15.0 45.0 1.39328 + 0.0 45.0 1.13519 + 15.0 45.0 1.11176 + 30.0 45.0 0.55506 + 45.0 45.0 0.04408 + 60.0 45.0 -0.2593 + 75.0 45.0 -0.42888 + 90.0 45.0 -0.51963 + 105.0 45.0 -0.55634 + 120.0 45.0 -0.25212 + 135.0 45.0 -0.62098 + 150.0 45.0 -1.22694 + 165.0 45.0 -1.05054 + 180.0 45.0 -0.55882 + -180.0 60.0 -0.18285 + -165.0 60.0 -0.0865 + -150.0 60.0 0.00476 + -135.0 60.0 0.11545 + -120.0 60.0 0.16266 + -105.0 60.0 0.01161 + -90.0 60.0 0.39632 + -75.0 60.0 0.75519 + -60.0 60.0 0.96557 + -45.0 60.0 0.9764 + -30.0 60.0 0.97745 + -15.0 60.0 0.97978 + 0.0 60.0 0.79555 + 15.0 60.0 -0.15675 + 30.0 60.0 -0.51647 + 45.0 60.0 -0.39418 + 60.0 60.0 -0.15303 + 75.0 60.0 -0.008 + 90.0 60.0 0.09982 + 105.0 60.0 0.37002 + 120.0 60.0 0.12378 + 135.0 60.0 -0.63827 + 150.0 60.0 -0.59589 + 165.0 60.0 -0.38041 + 180.0 60.0 -0.18285 + -180.0 75.0 -0.066 + -165.0 75.0 -0.07528 + -150.0 75.0 -0.04119 + -135.0 75.0 -0.07933 + -120.0 75.0 -0.19424 + -105.0 75.0 -0.27213 + -90.0 75.0 0.0 + -75.0 75.0 0.40627 + -60.0 75.0 0.67141 + -45.0 75.0 0.48954 + -30.0 75.0 0.49392 + -15.0 75.0 0.53926 + 0.0 75.0 -0.43613 + 15.0 75.0 -0.91296 + 30.0 75.0 -0.57046 + 45.0 75.0 0.20602 + 60.0 75.0 0.66426 + 75.0 75.0 0.78486 + 90.0 75.0 0.83638 + 105.0 75.0 0.47569 + 120.0 75.0 -0.24156 + 135.0 75.0 -0.36935 + 150.0 75.0 -0.03276 + 165.0 75.0 -0.00079 + 180.0 75.0 -0.066 + -180.0 90.0 -0.19813 + -165.0 90.0 -0.18275 + -150.0 90.0 -0.13564 + -135.0 90.0 -0.16443 + -120.0 90.0 -0.25121 + -105.0 90.0 -0.36588 + -90.0 90.0 -0.30532 + -75.0 90.0 -0.05335 + -60.0 90.0 -0.11065 + -45.0 90.0 -0.24703 + -30.0 90.0 -0.35383 + -15.0 90.0 -0.66704 + 0.0 90.0 -1.22785 + 15.0 90.0 -0.99837 + 30.0 90.0 0.07165 + 45.0 90.0 1.1709 + 60.0 90.0 1.52568 + 75.0 90.0 1.19212 + 90.0 90.0 0.65821 + 105.0 90.0 0.07691 + 120.0 90.0 -0.25244 + 135.0 90.0 -0.10611 + 150.0 90.0 0.09358 + 165.0 90.0 0.00731 + 180.0 90.0 -0.19813 + -180.0 105.0 -0.3485 + -165.0 105.0 -0.15035 + -150.0 105.0 -0.40367 + -135.0 105.0 -0.01197 + -120.0 105.0 -0.061 + -105.0 105.0 -0.1519 + -90.0 105.0 -0.31715 + -75.0 105.0 -0.62391 + -60.0 105.0 -0.90231 + -45.0 105.0 -1.37607 + -30.0 105.0 -1.62179 + -15.0 105.0 -1.73579 + 0.0 105.0 -1.64875 + 15.0 105.0 -0.75542 + 30.0 105.0 0.71157 + 45.0 105.0 1.26356 + 60.0 105.0 0.7596 + 75.0 105.0 0.594 + 90.0 105.0 0.30667 + 105.0 105.0 -0.06284 + 120.0 105.0 -0.20456 + 135.0 105.0 -0.08836 + 150.0 105.0 -0.1659 + 165.0 105.0 -0.35505 + 180.0 105.0 -0.3485 + -180.0 120.0 -0.34576 + -165.0 120.0 0.02576 + -150.0 120.0 0.27228 + -135.0 120.0 0.28454 + -120.0 120.0 0.18375 + -105.0 120.0 0.01398 + -90.0 120.0 -0.27455 + -75.0 120.0 -0.7758 + -60.0 120.0 -1.42554 + -45.0 120.0 -1.99064 + -30.0 120.0 -2.37393 + -15.0 120.0 -2.20009 + 0.0 120.0 -1.60683 + 15.0 120.0 -0.44372 + 30.0 120.0 1.09513 + 45.0 120.0 0.35522 + 60.0 120.0 -0.04151 + 75.0 120.0 0.17766 + 90.0 120.0 0.14305 + 105.0 120.0 -0.13472 + 120.0 120.0 -0.31725 + 135.0 120.0 -0.458 + 150.0 120.0 -0.64821 + 165.0 120.0 -0.63355 + 180.0 120.0 -0.34576 + -180.0 135.0 -0.08457 + -165.0 135.0 0.36013 + -150.0 135.0 0.54446 + -135.0 135.0 0.48098 + -120.0 135.0 0.27776 + -105.0 135.0 0.02335 + -90.0 135.0 -0.28766 + -75.0 135.0 -0.80414 + -60.0 135.0 -1.5133 + -45.0 135.0 -2.20028 + -30.0 135.0 -2.36835 + -15.0 135.0 -2.12483 + 0.0 135.0 -1.376 + 15.0 135.0 -0.25291 + 30.0 135.0 0.78641 + 45.0 135.0 -0.96321 + 60.0 135.0 -0.57499 + 75.0 135.0 -0.00398 + 90.0 135.0 0.08668 + 105.0 135.0 -0.17475 + 120.0 135.0 -0.55212 + 135.0 135.0 -0.94225 + 150.0 135.0 -1.01661 + 165.0 135.0 -0.69656 + 180.0 135.0 -0.08457 + -180.0 150.0 0.2851 + -165.0 150.0 0.66185 + -150.0 150.0 0.69665 + -135.0 150.0 0.48378 + -120.0 150.0 0.16399 + -105.0 150.0 -0.09637 + -90.0 150.0 -0.36878 + -75.0 150.0 -0.80945 + -60.0 150.0 -1.41793 + -45.0 150.0 -2.18914 + -30.0 150.0 -2.20786 + -15.0 150.0 -1.82363 + 0.0 150.0 -1.11629 + 15.0 150.0 -0.04735 + 30.0 150.0 -1.17126 + 45.0 150.0 -1.34899 + 60.0 150.0 -0.62467 + 75.0 150.0 0.05642 + 90.0 150.0 0.17332 + 105.0 150.0 -0.14673 + 120.0 150.0 -0.698 + 135.0 150.0 -1.11306 + 150.0 150.0 -1.02621 + 165.0 150.0 -0.41495 + 180.0 150.0 0.2851 + -180.0 165.0 0.76902 + -165.0 165.0 0.89311 + -150.0 165.0 0.59358 + -135.0 165.0 0.25887 + -120.0 165.0 -0.03955 + -105.0 165.0 -0.24006 + -90.0 165.0 -0.46456 + -75.0 165.0 -0.8317 + -60.0 165.0 -1.40143 + -45.0 165.0 -1.95471 + -30.0 165.0 -2.00388 + -15.0 165.0 -1.56184 + 0.0 165.0 -0.83182 + 15.0 165.0 -0.45132 + 30.0 165.0 -1.23096 + 45.0 165.0 -1.2265 + 60.0 165.0 -0.44761 + 75.0 165.0 0.25891 + 90.0 165.0 0.39936 + 105.0 165.0 0.0765 + 120.0 165.0 -0.49787 + 135.0 165.0 -0.79017 + 150.0 165.0 -0.50914 + 165.0 165.0 0.18602 + 180.0 165.0 0.76902 + -180.0 180.0 0.98936 + -165.0 180.0 0.76408 + -150.0 180.0 0.21674 + -135.0 180.0 -0.182 + -120.0 180.0 -0.37729 + -105.0 180.0 -0.47834 + -90.0 180.0 -0.59267 + -75.0 180.0 -0.93985 + -60.0 180.0 -1.55558 + -45.0 180.0 -2.01849 + -30.0 180.0 -1.94076 + -15.0 180.0 -1.464 + 0.0 180.0 0.18253 + 15.0 180.0 -0.80364 + 30.0 180.0 -1.32974 + 45.0 180.0 -1.31658 + 60.0 180.0 -0.5014 + 75.0 180.0 0.20431 + 90.0 180.0 0.39356 + 105.0 180.0 0.20356 + 120.0 180.0 -0.16993 + 135.0 180.0 -0.22733 + 150.0 180.0 0.13703 + 165.0 180.0 0.66356 + 180.0 180.0 0.98936 diff --git a/examples/amoeba/data.ubiquitin b/examples/amoeba/data.ubiquitin index d784798328..6b51695efb 100644 --- a/examples/amoeba/data.ubiquitin +++ b/examples/amoeba/data.ubiquitin @@ -1,14 +1,21 @@ -LAMMPS data file created from Tinker ubiquitin2.xyz and amoeba_ubiquitin2.prm files +LAMMPS data file created from Tinker ubiquitin.xyz and amoeba_ubiquitin.prm files 9737 atoms 6908 bonds 5094 angles +3297 dihedrals +651 impropers 6 atom types 48 bond types 111 angle types +189 dihedral types +33 improper types 0 54.99 xlo xhi 0 41.91 ylo yhi 0 41.91 zlo zhi +6 pitorsion types +71 bitorsions +106 pitorsions Masses @@ -16675,298 +16682,298 @@ Angles 1 1 2 1 5 2 1 2 1 6 3 1 2 1 7 -4 2 5 1 6 -5 2 5 1 7 -6 2 6 1 7 -7 3 1 2 3 -8 4 1 2 8 -9 5 1 2 9 +4 2 6 1 5 +5 2 7 1 5 +6 2 7 1 6 +7 3 3 2 1 +8 4 8 2 1 +9 5 9 2 1 10 6 3 2 8 11 7 3 2 9 12 8 8 2 9 -13 9 2 3 4 -14 10 2 3 20 -15 11 4 3 20 +13 9 4 3 2 +14 10 20 3 2 +15 11 20 3 4 16 12 2 9 10 17 13 2 9 13 18 13 2 9 14 19 14 10 9 13 20 14 10 9 14 -21 15 13 9 14 +21 15 14 9 13 22 16 9 10 11 23 14 9 10 15 24 14 9 10 16 -25 17 11 10 15 -26 17 11 10 16 -27 15 15 10 16 -28 18 10 11 12 -29 19 11 12 17 -30 19 11 12 18 -31 19 11 12 19 -32 15 17 12 18 -33 15 17 12 19 -34 15 18 12 19 +25 17 15 10 11 +26 17 16 10 11 +27 15 16 10 15 +28 18 12 11 10 +29 19 17 12 11 +30 19 18 12 11 +31 19 19 12 11 +32 15 18 12 17 +33 15 19 12 17 +34 15 19 12 18 35 20 3 20 21 36 21 3 20 24 -37 22 21 20 24 +37 22 24 20 21 38 23 20 21 22 39 24 20 21 25 40 25 20 21 26 41 6 22 21 25 42 7 22 21 26 43 8 25 21 26 -44 9 21 22 23 -45 10 21 22 37 -46 11 23 22 37 +44 9 23 22 21 +45 10 37 22 21 +46 11 37 22 23 47 12 21 26 27 48 13 21 26 31 49 13 21 26 32 50 14 27 26 31 51 14 27 26 32 -52 15 31 26 32 -53 26 26 27 28 +52 15 32 26 31 +53 26 28 27 26 54 14 26 27 33 55 14 26 27 34 56 27 28 27 33 57 27 28 27 34 -58 15 33 27 34 -59 28 27 28 29 -60 29 27 28 30 -61 11 29 28 30 +58 15 34 27 33 +59 28 29 28 27 +60 29 30 28 27 +61 11 30 28 29 62 21 28 30 35 63 21 28 30 36 -64 30 35 30 36 +64 30 36 30 35 65 20 22 37 38 66 21 22 37 41 -67 22 38 37 41 +67 22 41 37 38 68 23 37 38 39 69 24 37 38 42 70 31 37 38 43 71 6 39 38 42 72 32 39 38 43 73 33 42 38 43 -74 9 38 39 40 -75 10 38 39 56 -76 11 40 39 56 +74 9 40 39 38 +75 10 56 39 38 +76 11 56 39 40 77 34 38 43 44 78 34 38 43 45 -79 33 38 43 47 -80 35 44 43 45 -81 8 44 43 47 -82 8 45 43 47 +79 33 47 43 38 +80 35 45 43 44 +81 8 47 43 44 +82 8 47 43 45 83 12 43 44 46 84 13 43 44 48 85 13 43 44 49 86 14 46 44 48 87 14 46 44 49 -88 15 48 44 49 +88 15 49 44 48 89 13 43 45 50 90 13 43 45 51 91 13 43 45 52 -92 15 50 45 51 -93 15 50 45 52 -94 15 51 45 52 +92 15 51 45 50 +93 15 52 45 50 +94 15 52 45 51 95 14 44 46 53 96 14 44 46 54 97 14 44 46 55 -98 15 53 46 54 -99 15 53 46 55 -100 15 54 46 55 +98 15 54 46 53 +99 15 55 46 53 +100 15 55 46 54 101 20 39 56 57 102 21 39 56 60 -103 22 57 56 60 +103 22 60 56 57 104 23 56 57 58 105 24 56 57 61 106 25 56 57 62 107 6 58 57 61 108 7 58 57 62 109 8 61 57 62 -110 9 57 58 59 -111 10 57 58 76 -112 11 59 58 76 +110 9 59 58 57 +111 10 76 58 57 +112 11 76 58 59 113 36 57 62 63 114 13 57 62 69 115 13 57 62 70 -116 37 63 62 69 -117 37 63 62 70 -118 15 69 62 70 +116 37 69 62 63 +117 37 70 62 63 +118 15 70 62 69 119 38 62 63 64 120 38 62 63 65 -121 39 64 63 65 -122 39 63 64 66 +121 39 65 63 64 +122 39 66 64 63 123 40 63 64 71 124 40 66 64 71 -125 39 63 65 67 +125 39 67 65 63 126 40 63 65 72 127 40 67 65 72 -128 39 64 66 68 +128 39 68 66 64 129 40 64 66 73 130 40 68 66 73 -131 39 65 67 68 +131 39 68 67 65 132 40 65 67 74 133 40 68 67 74 -134 39 66 68 67 +134 39 67 68 66 135 40 66 68 75 136 40 67 68 75 137 20 58 76 77 138 21 58 76 80 -139 22 77 76 80 +139 22 80 76 77 140 23 76 77 78 141 24 76 77 81 142 31 76 77 82 143 6 78 77 81 144 32 78 77 82 145 33 81 77 82 -146 9 77 78 79 -147 10 77 78 92 -148 11 79 78 92 +146 9 79 78 77 +147 10 92 78 77 +148 11 92 78 79 149 34 77 82 83 150 34 77 82 84 -151 33 77 82 85 -152 35 83 82 84 -153 8 83 82 85 -154 8 84 82 85 +151 33 85 82 77 +152 35 84 82 83 +153 8 85 82 83 +154 8 85 82 84 155 13 82 83 86 156 13 82 83 87 157 13 82 83 88 -158 15 86 83 87 -159 15 86 83 88 -160 15 87 83 88 +158 15 87 83 86 +159 15 88 83 86 +160 15 88 83 87 161 13 82 84 89 162 13 82 84 90 163 13 82 84 91 -164 15 89 84 90 -165 15 89 84 91 -166 15 90 84 91 +164 15 90 84 89 +165 15 91 84 89 +166 15 91 84 90 167 20 78 92 93 168 21 78 92 96 -169 22 93 92 96 +169 22 96 92 93 170 23 92 93 94 171 24 92 93 97 172 25 92 93 98 173 6 94 93 97 174 7 94 93 98 175 8 97 93 98 -176 9 93 94 95 -177 10 93 94 114 -178 11 95 94 114 +176 9 95 94 93 +177 10 114 94 93 +178 11 114 94 95 179 12 93 98 99 180 13 93 98 103 181 13 93 98 104 182 14 99 98 103 183 14 99 98 104 -184 15 103 98 104 -185 41 98 99 100 +184 15 104 98 103 +185 41 100 99 98 186 14 98 99 105 187 14 98 99 106 188 14 100 99 105 189 14 100 99 106 -190 15 105 99 106 -191 41 99 100 101 +190 15 106 99 105 +191 41 101 100 99 192 14 99 100 107 193 14 99 100 108 194 14 101 100 107 195 14 101 100 108 -196 15 107 100 108 +196 15 108 100 107 197 42 100 101 102 198 14 100 101 109 199 14 100 101 110 -200 43 102 101 109 -201 43 102 101 110 -202 15 109 101 110 +200 43 109 101 102 +201 43 110 101 102 +202 15 110 101 109 203 44 101 102 111 204 44 101 102 112 205 44 101 102 113 -206 45 111 102 112 -207 45 111 102 113 -208 45 112 102 113 +206 45 112 102 111 +207 45 113 102 111 +208 45 113 102 112 209 20 94 114 115 210 21 94 114 118 -211 22 115 114 118 +211 22 118 114 115 212 23 114 115 116 213 24 114 115 119 214 31 114 115 120 215 6 116 115 119 216 32 116 115 120 217 33 119 115 120 -218 9 115 116 117 -219 10 115 116 128 -220 11 117 116 128 +218 9 117 116 115 +219 10 128 116 115 +220 11 128 116 117 221 46 115 120 121 222 34 115 120 122 -223 33 115 120 123 -224 47 121 120 122 -225 48 121 120 123 -226 8 122 120 123 +223 33 123 120 115 +224 47 122 120 121 +225 48 123 120 121 +226 8 123 120 122 227 49 120 121 124 228 13 120 122 125 229 13 120 122 126 230 13 120 122 127 -231 15 125 122 126 -232 15 125 122 127 -233 15 126 122 127 +231 15 126 122 125 +232 15 127 122 125 +233 15 127 122 126 234 20 116 128 129 235 21 116 128 132 -236 22 129 128 132 +236 22 132 128 129 237 23 128 129 130 238 24 128 129 133 239 25 128 129 134 240 6 130 129 133 241 7 130 129 134 242 8 133 129 134 -243 9 129 130 131 -244 10 129 130 147 -245 11 131 130 147 -246 50 129 134 135 +243 9 131 130 129 +244 10 147 130 129 +245 11 147 130 131 +246 50 135 134 129 247 13 129 134 138 248 13 129 134 139 249 13 135 134 138 250 13 135 134 139 -251 15 138 134 139 -252 35 134 135 136 -253 35 134 135 137 -254 8 134 135 140 -255 35 136 135 137 -256 8 136 135 140 -257 8 137 135 140 +251 15 139 134 138 +252 35 136 135 134 +253 35 137 135 134 +254 8 140 135 134 +255 35 137 135 136 +256 8 140 135 136 +257 8 140 135 137 258 13 135 136 141 259 13 135 136 142 260 13 135 136 143 -261 15 141 136 142 -262 15 141 136 143 -263 15 142 136 143 +261 15 142 136 141 +262 15 143 136 141 +263 15 143 136 142 264 13 135 137 144 265 13 135 137 145 266 13 135 137 146 -267 15 144 137 145 -268 15 144 137 146 -269 15 145 137 146 +267 15 145 137 144 +268 15 146 137 144 +269 15 146 137 145 270 20 130 147 148 271 21 130 147 151 -272 22 148 147 151 +272 22 151 147 148 273 23 147 148 149 274 24 147 148 152 275 31 147 148 153 276 6 149 148 152 277 32 149 148 153 278 33 152 148 153 -279 9 148 149 150 -280 10 148 149 161 -281 11 150 149 161 +279 9 150 149 148 +280 10 161 149 148 +281 11 161 149 150 282 46 148 153 154 283 34 148 153 155 -284 33 148 153 156 -285 47 154 153 155 -286 48 154 153 156 -287 8 155 153 156 +284 33 156 153 148 +285 47 155 153 154 +286 48 156 153 154 +287 8 156 153 155 288 49 153 154 157 289 13 153 155 158 290 13 153 155 159 291 13 153 155 160 -292 15 158 155 159 -293 15 158 155 160 -294 15 159 155 160 -295 51 149 161 162 +292 15 159 155 158 +293 15 160 155 158 +294 15 160 155 159 +295 51 162 161 149 296 21 149 161 165 297 52 162 161 165 298 53 161 162 163 @@ -16974,241 +16981,241 @@ Angles 300 54 161 162 167 301 55 163 162 166 302 55 163 162 167 -303 56 166 162 167 +303 56 167 162 166 304 57 162 163 164 -305 58 162 163 168 -306 11 164 163 168 +305 58 168 163 162 +306 11 168 163 164 307 20 163 168 169 308 21 163 168 172 -309 22 169 168 172 +309 22 172 168 169 310 23 168 169 170 311 24 168 169 173 312 25 168 169 174 313 6 170 169 173 314 7 170 169 174 315 8 173 169 174 -316 9 169 170 171 -317 10 169 170 190 -318 11 171 170 190 +316 9 171 170 169 +317 10 190 170 169 +318 11 190 170 171 319 12 169 174 175 320 13 169 174 179 321 13 169 174 180 322 14 175 174 179 323 14 175 174 180 -324 15 179 174 180 -325 41 174 175 176 +324 15 180 174 179 +325 41 176 175 174 326 14 174 175 181 327 14 174 175 182 328 14 176 175 181 329 14 176 175 182 -330 15 181 175 182 -331 41 175 176 177 +330 15 182 175 181 +331 41 177 176 175 332 14 175 176 183 333 14 175 176 184 334 14 177 176 183 335 14 177 176 184 -336 15 183 176 184 +336 15 184 176 183 337 42 176 177 178 338 14 176 177 185 339 14 176 177 186 -340 43 178 177 185 -341 43 178 177 186 -342 15 185 177 186 +340 43 185 177 178 +341 43 186 177 178 +342 15 186 177 185 343 44 177 178 187 344 44 177 178 188 345 44 177 178 189 -346 45 187 178 188 -347 45 187 178 189 -348 45 188 178 189 +346 45 188 178 187 +347 45 189 178 187 +348 45 189 178 188 349 20 170 190 191 350 21 170 190 194 -351 22 191 190 194 +351 22 194 190 191 352 23 190 191 192 353 24 190 191 195 354 31 190 191 196 355 6 192 191 195 356 32 192 191 196 357 33 195 191 196 -358 9 191 192 193 -359 10 191 192 204 -360 11 193 192 204 +358 9 193 192 191 +359 10 204 192 191 +360 11 204 192 193 361 46 191 196 197 362 34 191 196 198 -363 33 191 196 199 -364 47 197 196 198 -365 48 197 196 199 -366 8 198 196 199 +363 33 199 196 191 +364 47 198 196 197 +365 48 199 196 197 +366 8 199 196 198 367 49 196 197 200 368 13 196 198 201 369 13 196 198 202 370 13 196 198 203 -371 15 201 198 202 -372 15 201 198 203 -373 15 202 198 203 +371 15 202 198 201 +372 15 203 198 201 +373 15 203 198 202 374 20 192 204 205 375 21 192 204 208 -376 22 205 204 208 +376 22 208 204 205 377 23 204 205 206 378 24 204 205 209 379 31 204 205 210 380 6 206 205 209 381 32 206 205 210 382 33 209 205 210 -383 9 205 206 207 -384 10 205 206 223 -385 11 207 206 223 +383 9 207 206 205 +384 10 223 206 205 +385 11 223 206 207 386 34 205 210 211 387 34 205 210 212 -388 33 205 210 214 -389 35 211 210 212 -390 8 211 210 214 -391 8 212 210 214 +388 33 214 210 205 +389 35 212 210 211 +390 8 214 210 211 +391 8 214 210 212 392 12 210 211 213 393 13 210 211 215 394 13 210 211 216 395 14 213 211 215 396 14 213 211 216 -397 15 215 211 216 +397 15 216 211 215 398 13 210 212 217 399 13 210 212 218 400 13 210 212 219 -401 15 217 212 218 -402 15 217 212 219 -403 15 218 212 219 +401 15 218 212 217 +402 15 219 212 217 +403 15 219 212 218 404 14 211 213 220 405 14 211 213 221 406 14 211 213 222 -407 15 220 213 221 -408 15 220 213 222 -409 15 221 213 222 +407 15 221 213 220 +408 15 222 213 220 +409 15 222 213 221 410 20 206 223 224 411 21 206 223 227 -412 22 224 223 227 +412 22 227 223 224 413 23 223 224 225 414 24 223 224 228 415 31 223 224 229 416 6 225 224 228 417 32 225 224 229 418 33 228 224 229 -419 9 224 225 226 -420 10 224 225 237 -421 11 226 225 237 +419 9 226 225 224 +420 10 237 225 224 +421 11 237 225 226 422 46 224 229 230 423 34 224 229 231 -424 33 224 229 232 -425 47 230 229 231 -426 48 230 229 232 -427 8 231 229 232 +424 33 232 229 224 +425 47 231 229 230 +426 48 232 229 230 +427 8 232 229 231 428 49 229 230 233 429 13 229 231 234 430 13 229 231 235 431 13 229 231 236 -432 15 234 231 235 -433 15 234 231 236 -434 15 235 231 236 +432 15 235 231 234 +433 15 236 231 234 +434 15 236 231 235 435 20 225 237 238 436 21 225 237 241 -437 22 238 237 241 +437 22 241 237 238 438 23 237 238 239 439 24 237 238 242 440 25 237 238 243 441 6 239 238 242 442 7 239 238 243 443 8 242 238 243 -444 9 238 239 240 -445 10 238 239 256 -446 11 240 239 256 -447 50 238 243 244 +444 9 240 239 238 +445 10 256 239 238 +446 11 256 239 240 +447 50 244 243 238 448 13 238 243 247 449 13 238 243 248 450 13 244 243 247 451 13 244 243 248 -452 15 247 243 248 -453 35 243 244 245 -454 35 243 244 246 -455 8 243 244 249 -456 35 245 244 246 -457 8 245 244 249 -458 8 246 244 249 +452 15 248 243 247 +453 35 245 244 243 +454 35 246 244 243 +455 8 249 244 243 +456 35 246 244 245 +457 8 249 244 245 +458 8 249 244 246 459 13 244 245 250 460 13 244 245 251 461 13 244 245 252 -462 15 250 245 251 -463 15 250 245 252 -464 15 251 245 252 +462 15 251 245 250 +463 15 252 245 250 +464 15 252 245 251 465 13 244 246 253 466 13 244 246 254 467 13 244 246 255 -468 15 253 246 254 -469 15 253 246 255 -470 15 254 246 255 +468 15 254 246 253 +469 15 255 246 253 +470 15 255 246 254 471 20 239 256 257 472 21 239 256 260 -473 22 257 256 260 +473 22 260 256 257 474 23 256 257 258 475 24 256 257 261 476 25 256 257 262 477 6 258 257 261 478 7 258 257 262 479 8 261 257 262 -480 9 257 258 259 -481 10 257 258 271 -482 11 259 258 271 +480 9 259 258 257 +481 10 271 258 257 +482 11 271 258 259 483 12 257 262 263 484 13 257 262 267 485 13 257 262 268 486 14 263 262 267 487 14 263 262 268 -488 15 267 262 268 +488 15 268 262 267 489 59 262 263 264 490 14 262 263 269 491 14 262 263 270 -492 60 264 263 269 -493 60 264 263 270 -494 15 269 263 270 +492 60 269 263 264 +493 60 270 263 264 +494 15 270 263 269 495 61 263 264 265 496 61 263 264 266 -497 62 265 264 266 +497 62 266 264 265 498 20 258 271 272 499 21 258 271 275 -500 22 272 271 275 +500 22 275 271 272 501 23 271 272 273 502 24 271 272 276 503 31 271 272 277 504 6 273 272 276 505 32 273 272 277 506 33 276 272 277 -507 9 272 273 274 -508 10 272 273 287 -509 11 274 273 287 +507 9 274 273 272 +508 10 287 273 272 +509 11 287 273 274 510 34 272 277 278 511 34 272 277 279 -512 33 272 277 280 -513 35 278 277 279 -514 8 278 277 280 -515 8 279 277 280 +512 33 280 277 272 +513 35 279 277 278 +514 8 280 277 278 +515 8 280 277 279 516 13 277 278 281 517 13 277 278 282 518 13 277 278 283 -519 15 281 278 282 -520 15 281 278 283 -521 15 282 278 283 +519 15 282 278 281 +520 15 283 278 281 +521 15 283 278 282 522 13 277 279 284 523 13 277 279 285 524 13 277 279 286 -525 15 284 279 285 -526 15 284 279 286 -527 15 285 279 286 +525 15 285 279 284 +526 15 286 279 284 +527 15 286 279 285 528 20 273 287 288 529 21 273 287 291 -530 22 288 287 291 +530 22 291 287 288 531 23 287 288 289 532 24 287 288 292 533 25 287 288 293 534 6 289 288 292 535 7 289 288 293 536 8 292 288 293 -537 9 288 289 290 +537 9 290 289 288 538 63 288 289 302 539 64 290 289 302 540 12 288 293 294 @@ -17216,487 +17223,487 @@ Angles 542 13 288 293 299 543 14 294 293 298 544 14 294 293 299 -545 15 298 293 299 +545 15 299 293 298 546 59 293 294 295 547 14 293 294 300 548 14 293 294 301 -549 60 295 294 300 -550 60 295 294 301 -551 15 300 294 301 +549 60 300 294 295 +550 60 301 294 295 +551 15 301 294 300 552 61 294 295 296 553 61 294 295 297 -554 62 296 295 297 +554 62 297 295 296 555 65 289 302 303 556 66 289 302 309 557 67 303 302 309 -558 68 302 303 304 -559 69 302 303 306 +558 68 304 303 302 +559 69 306 303 302 560 70 302 303 307 561 6 304 303 306 562 71 304 303 307 563 72 306 303 307 -564 9 303 304 305 -565 10 303 304 316 -566 11 305 304 316 +564 9 305 304 303 +565 10 316 304 303 +566 11 316 304 305 567 73 303 307 308 568 74 303 307 310 569 74 303 307 311 -570 75 308 307 310 -571 75 308 307 311 -572 76 310 307 311 -573 77 307 308 309 -574 75 307 308 312 -575 75 307 308 313 -576 75 309 308 312 -577 75 309 308 313 -578 76 312 308 313 +570 75 310 307 308 +571 75 311 307 308 +572 76 311 307 310 +573 77 309 308 307 +574 75 312 308 307 +575 75 313 308 307 +576 75 312 308 309 +577 75 313 308 309 +578 76 313 308 312 579 78 302 309 308 -580 79 302 309 314 -581 79 302 309 315 -582 80 308 309 314 -583 80 308 309 315 -584 81 314 309 315 +580 79 314 309 302 +581 79 315 309 302 +582 80 314 309 308 +583 80 315 309 308 +584 81 315 309 314 585 20 304 316 317 586 21 304 316 320 -587 22 317 316 320 +587 22 320 316 317 588 23 316 317 318 589 24 316 317 321 590 25 316 317 322 591 6 318 317 321 592 7 318 317 322 593 8 321 317 322 -594 9 317 318 319 -595 10 317 318 327 -596 11 319 318 327 +594 9 319 318 317 +595 10 327 318 317 +596 11 327 318 319 597 82 317 322 323 598 13 317 322 324 599 13 317 322 325 -600 83 323 322 324 -601 83 323 322 325 -602 15 324 322 325 +600 83 324 322 323 +601 83 325 322 323 +602 15 325 322 324 603 84 322 323 326 604 20 318 327 328 605 21 318 327 331 -606 22 328 327 331 +606 22 331 327 328 607 23 327 328 329 608 24 327 328 332 609 25 327 328 333 610 6 329 328 332 611 7 329 328 333 612 8 332 328 333 -613 9 328 329 330 -614 10 328 329 339 -615 11 330 329 339 +613 9 330 329 328 +614 10 339 329 328 +615 11 339 329 330 616 85 328 333 334 617 13 328 333 337 618 13 328 333 338 -619 60 334 333 337 -620 60 334 333 338 -621 15 337 333 338 +619 60 337 333 334 +620 60 338 333 334 +621 15 338 333 337 622 61 333 334 335 623 61 333 334 336 -624 62 335 334 336 +624 62 336 334 335 625 20 329 339 340 626 21 329 339 343 -627 22 340 339 343 +627 22 343 339 340 628 23 339 340 341 629 24 339 340 344 630 31 339 340 345 631 6 341 340 344 632 32 341 340 345 633 33 344 340 345 -634 9 340 341 342 -635 10 340 341 353 -636 11 342 341 353 +634 9 342 341 340 +635 10 353 341 340 +636 11 353 341 342 637 46 340 345 346 638 34 340 345 347 -639 33 340 345 348 -640 47 346 345 347 -641 48 346 345 348 -642 8 347 345 348 +639 33 348 345 340 +640 47 347 345 346 +641 48 348 345 346 +642 8 348 345 347 643 49 345 346 349 644 13 345 347 350 645 13 345 347 351 646 13 345 347 352 -647 15 350 347 351 -648 15 350 347 352 -649 15 351 347 352 +647 15 351 347 350 +648 15 352 347 350 +649 15 352 347 351 650 20 341 353 354 651 21 341 353 357 -652 22 354 353 357 +652 22 357 353 354 653 23 353 354 355 654 24 353 354 358 655 31 353 354 359 656 6 355 354 358 657 32 355 354 359 658 33 358 354 359 -659 9 354 355 356 -660 10 354 355 372 -661 11 356 355 372 +659 9 356 355 354 +660 10 372 355 354 +661 11 372 355 356 662 34 354 359 360 663 34 354 359 361 -664 33 354 359 363 -665 35 360 359 361 -666 8 360 359 363 -667 8 361 359 363 +664 33 363 359 354 +665 35 361 359 360 +666 8 363 359 360 +667 8 363 359 361 668 12 359 360 362 669 13 359 360 364 670 13 359 360 365 671 14 362 360 364 672 14 362 360 365 -673 15 364 360 365 +673 15 365 360 364 674 13 359 361 366 675 13 359 361 367 676 13 359 361 368 -677 15 366 361 367 -678 15 366 361 368 -679 15 367 361 368 +677 15 367 361 366 +678 15 368 361 366 +679 15 368 361 367 680 14 360 362 369 681 14 360 362 370 682 14 360 362 371 -683 15 369 362 370 -684 15 369 362 371 -685 15 370 362 371 +683 15 370 362 369 +684 15 371 362 369 +685 15 371 362 370 686 20 355 372 373 687 21 355 372 376 -688 22 373 372 376 +688 22 376 372 373 689 23 372 373 374 690 24 372 373 377 691 25 372 373 378 692 6 374 373 377 693 7 374 373 378 694 8 377 373 378 -695 9 373 374 375 -696 10 373 374 387 -697 11 375 374 387 +695 9 375 374 373 +696 10 387 374 373 +697 11 387 374 375 698 12 373 378 379 699 13 373 378 383 700 13 373 378 384 701 14 379 378 383 702 14 379 378 384 -703 15 383 378 384 +703 15 384 378 383 704 59 378 379 380 705 14 378 379 385 706 14 378 379 386 -707 60 380 379 385 -708 60 380 379 386 -709 15 385 379 386 +707 60 385 379 380 +708 60 386 379 380 +709 15 386 379 385 710 61 379 380 381 711 61 379 380 382 -712 62 381 380 382 +712 62 382 380 381 713 20 374 387 388 714 21 374 387 391 -715 22 388 387 391 +715 22 391 387 388 716 23 387 388 389 717 24 387 388 392 718 25 387 388 393 719 6 389 388 392 720 7 389 388 393 721 8 392 388 393 -722 9 388 389 390 -723 10 388 389 401 -724 11 390 389 401 -725 86 388 393 394 +722 9 390 389 388 +723 10 401 389 388 +724 11 401 389 390 +725 86 394 393 388 726 13 388 393 397 727 13 388 393 398 728 27 394 393 397 729 27 394 393 398 -730 15 397 393 398 -731 28 393 394 395 -732 29 393 394 396 -733 11 395 394 396 +730 15 398 393 397 +731 28 395 394 393 +732 29 396 394 393 +733 11 396 394 395 734 21 394 396 399 735 21 394 396 400 -736 30 399 396 400 +736 30 400 396 399 737 20 389 401 402 738 21 389 401 405 -739 22 402 401 405 +739 22 405 401 402 740 23 401 402 403 741 24 401 402 406 742 31 401 402 407 743 6 403 402 406 744 32 403 402 407 745 33 406 402 407 -746 9 402 403 404 -747 10 402 403 417 -748 11 404 403 417 +746 9 404 403 402 +747 10 417 403 402 +748 11 417 403 404 749 34 402 407 408 750 34 402 407 409 -751 33 402 407 410 -752 35 408 407 409 -753 8 408 407 410 -754 8 409 407 410 +751 33 410 407 402 +752 35 409 407 408 +753 8 410 407 408 +754 8 410 407 409 755 13 407 408 411 756 13 407 408 412 757 13 407 408 413 -758 15 411 408 412 -759 15 411 408 413 -760 15 412 408 413 +758 15 412 408 411 +759 15 413 408 411 +760 15 413 408 412 761 13 407 409 414 762 13 407 409 415 763 13 407 409 416 -764 15 414 409 415 -765 15 414 409 416 -766 15 415 409 416 +764 15 415 409 414 +765 15 416 409 414 +766 15 416 409 415 767 20 403 417 418 768 21 403 417 421 -769 22 418 417 421 +769 22 421 417 418 770 23 417 418 419 771 24 417 418 422 772 25 417 418 423 773 6 419 418 422 774 7 419 418 423 775 8 422 418 423 -776 9 418 419 420 -777 10 418 419 439 -778 11 420 419 439 +776 9 420 419 418 +777 10 439 419 418 +778 11 439 419 420 779 12 418 423 424 780 13 418 423 428 781 13 418 423 429 782 14 424 423 428 783 14 424 423 429 -784 15 428 423 429 -785 41 423 424 425 +784 15 429 423 428 +785 41 425 424 423 786 14 423 424 430 787 14 423 424 431 788 14 425 424 430 789 14 425 424 431 -790 15 430 424 431 -791 41 424 425 426 +790 15 431 424 430 +791 41 426 425 424 792 14 424 425 432 793 14 424 425 433 794 14 426 425 432 795 14 426 425 433 -796 15 432 425 433 +796 15 433 425 432 797 42 425 426 427 798 14 425 426 434 799 14 425 426 435 -800 43 427 426 434 -801 43 427 426 435 -802 15 434 426 435 +800 43 434 426 427 +801 43 435 426 427 +802 15 435 426 434 803 44 426 427 436 804 44 426 427 437 805 44 426 427 438 -806 45 436 427 437 -807 45 436 427 438 -808 45 437 427 438 +806 45 437 427 436 +807 45 438 427 436 +808 45 438 427 437 809 20 419 439 440 810 21 419 439 443 -811 22 440 439 443 +811 22 443 439 440 812 23 439 440 441 813 24 439 440 444 814 25 439 440 445 815 6 441 440 444 816 7 441 440 445 817 8 444 440 445 -818 9 440 441 442 -819 10 440 441 449 -820 11 442 441 449 +818 9 442 441 440 +819 10 449 441 440 +820 11 449 441 442 821 13 440 445 446 822 13 440 445 447 823 13 440 445 448 -824 15 446 445 447 -825 15 446 445 448 -826 15 447 445 448 +824 15 447 445 446 +825 15 448 445 446 +826 15 448 445 447 827 20 441 449 450 828 21 441 449 453 -829 22 450 449 453 +829 22 453 449 450 830 23 449 450 451 831 24 449 450 454 832 25 449 450 455 833 6 451 450 454 834 7 451 450 455 835 8 454 450 455 -836 9 450 451 452 -837 10 450 451 471 -838 11 452 451 471 +836 9 452 451 450 +837 10 471 451 450 +838 11 471 451 452 839 12 450 455 456 840 13 450 455 460 841 13 450 455 461 842 14 456 455 460 843 14 456 455 461 -844 15 460 455 461 -845 41 455 456 457 +844 15 461 455 460 +845 41 457 456 455 846 14 455 456 462 847 14 455 456 463 848 14 457 456 462 849 14 457 456 463 -850 15 462 456 463 -851 41 456 457 458 +850 15 463 456 462 +851 41 458 457 456 852 14 456 457 464 853 14 456 457 465 854 14 458 457 464 855 14 458 457 465 -856 15 464 457 465 +856 15 465 457 464 857 42 457 458 459 858 14 457 458 466 859 14 457 458 467 -860 43 459 458 466 -861 43 459 458 467 -862 15 466 458 467 +860 43 466 458 459 +861 43 467 458 459 +862 15 467 458 466 863 44 458 459 468 864 44 458 459 469 865 44 458 459 470 -866 45 468 459 469 -867 45 468 459 470 -868 45 469 459 470 +866 45 469 459 468 +867 45 470 459 468 +868 45 470 459 469 869 20 451 471 472 870 21 451 471 475 -871 22 472 471 475 +871 22 475 471 472 872 23 471 472 473 873 24 471 472 476 874 31 471 472 477 875 6 473 472 476 876 32 473 472 477 877 33 476 472 477 -878 9 472 473 474 -879 10 472 473 490 -880 11 474 473 490 +878 9 474 473 472 +879 10 490 473 472 +880 11 490 473 474 881 34 472 477 478 882 34 472 477 479 -883 33 472 477 481 -884 35 478 477 479 -885 8 478 477 481 -886 8 479 477 481 +883 33 481 477 472 +884 35 479 477 478 +885 8 481 477 478 +886 8 481 477 479 887 12 477 478 480 888 13 477 478 482 889 13 477 478 483 890 14 480 478 482 891 14 480 478 483 -892 15 482 478 483 +892 15 483 478 482 893 13 477 479 484 894 13 477 479 485 895 13 477 479 486 -896 15 484 479 485 -897 15 484 479 486 -898 15 485 479 486 +896 15 485 479 484 +897 15 486 479 484 +898 15 486 479 485 899 14 478 480 487 900 14 478 480 488 901 14 478 480 489 -902 15 487 480 488 -903 15 487 480 489 -904 15 488 480 489 +902 15 488 480 487 +903 15 489 480 487 +904 15 489 480 488 905 20 473 490 491 906 21 473 490 494 -907 22 491 490 494 +907 22 494 490 491 908 23 490 491 492 909 24 490 491 495 910 25 490 491 496 911 6 492 491 495 912 7 492 491 496 913 8 495 491 496 -914 9 491 492 493 -915 10 491 492 507 -916 11 493 492 507 +914 9 493 492 491 +915 10 507 492 491 +916 11 507 492 493 917 12 491 496 497 918 13 491 496 501 919 13 491 496 502 920 14 497 496 501 921 14 497 496 502 -922 15 501 496 502 -923 26 496 497 498 +922 15 502 496 501 +923 26 498 497 496 924 14 496 497 503 925 14 496 497 504 926 27 498 497 503 927 27 498 497 504 -928 15 503 497 504 -929 28 497 498 499 -930 29 497 498 500 -931 11 499 498 500 +928 15 504 497 503 +929 28 499 498 497 +930 29 500 498 497 +931 11 500 498 499 932 21 498 500 505 933 21 498 500 506 -934 30 505 500 506 +934 30 506 500 505 935 20 492 507 508 936 21 492 507 511 -937 22 508 507 511 +937 22 511 507 508 938 23 507 508 509 939 24 507 508 512 940 25 507 508 513 941 6 509 508 512 942 7 509 508 513 943 8 512 508 513 -944 9 508 509 510 -945 10 508 509 519 -946 11 510 509 519 +944 9 510 509 508 +945 10 519 509 508 +946 11 519 509 510 947 85 508 513 514 948 13 508 513 517 949 13 508 513 518 -950 60 514 513 517 -951 60 514 513 518 -952 15 517 513 518 +950 60 517 513 514 +951 60 518 513 514 +952 15 518 513 517 953 61 513 514 515 954 61 513 514 516 -955 62 515 514 516 +955 62 516 514 515 956 20 509 519 520 957 21 509 519 523 -958 22 520 519 523 +958 22 523 519 520 959 23 519 520 521 960 24 519 520 524 961 25 519 520 525 962 6 521 520 524 963 7 521 520 525 964 8 524 520 525 -965 9 520 521 522 -966 10 520 521 541 -967 11 522 521 541 +965 9 522 521 520 +966 10 541 521 520 +967 11 541 521 522 968 12 520 525 526 969 13 520 525 530 970 13 520 525 531 971 14 526 525 530 972 14 526 525 531 -973 15 530 525 531 -974 41 525 526 527 +973 15 531 525 530 +974 41 527 526 525 975 14 525 526 532 976 14 525 526 533 977 14 527 526 532 978 14 527 526 533 -979 15 532 526 533 -980 41 526 527 528 +979 15 533 526 532 +980 41 528 527 526 981 14 526 527 534 982 14 526 527 535 983 14 528 527 534 984 14 528 527 535 -985 15 534 527 535 +985 15 535 527 534 986 42 527 528 529 987 14 527 528 536 988 14 527 528 537 -989 43 529 528 536 -990 43 529 528 537 -991 15 536 528 537 +989 43 536 528 529 +990 43 537 528 529 +991 15 537 528 536 992 44 528 529 538 993 44 528 529 539 994 44 528 529 540 -995 45 538 529 539 -996 45 538 529 540 -997 45 539 529 540 +995 45 539 529 538 +996 45 540 529 538 +997 45 540 529 539 998 20 521 541 542 999 21 521 541 545 -1000 22 542 541 545 +1000 22 545 541 542 1001 23 541 542 543 1002 24 541 542 546 1003 25 541 542 547 1004 6 543 542 546 1005 7 543 542 547 1006 8 546 542 547 -1007 9 542 543 544 -1008 10 542 543 556 -1009 11 544 543 556 +1007 9 544 543 542 +1008 10 556 543 542 +1009 11 556 543 544 1010 12 542 547 548 1011 13 542 547 552 1012 13 542 547 553 1013 14 548 547 552 1014 14 548 547 553 -1015 15 552 547 553 +1015 15 553 547 552 1016 59 547 548 549 1017 14 547 548 554 1018 14 547 548 555 -1019 60 549 548 554 -1020 60 549 548 555 -1021 15 554 548 555 +1019 60 554 548 549 +1020 60 555 548 549 +1021 15 555 548 554 1022 61 548 549 550 1023 61 548 549 551 -1024 62 550 549 551 -1025 51 543 556 557 +1024 62 551 549 550 +1025 51 557 556 543 1026 21 543 556 560 1027 52 557 556 560 1028 53 556 557 558 @@ -17704,356 +17711,356 @@ Angles 1030 54 556 557 562 1031 55 558 557 561 1032 55 558 557 562 -1033 56 561 557 562 +1033 56 562 557 561 1034 57 557 558 559 -1035 58 557 558 563 -1036 11 559 558 563 +1035 58 563 558 557 +1036 11 563 558 559 1037 20 558 563 564 1038 21 558 563 567 -1039 22 564 563 567 +1039 22 567 563 564 1040 23 563 564 565 1041 24 563 564 568 1042 31 563 564 569 1043 6 565 564 568 1044 32 565 564 569 1045 33 568 564 569 -1046 9 564 565 566 +1046 9 566 565 564 1047 63 564 565 582 1048 64 566 565 582 1049 34 564 569 570 1050 34 564 569 571 -1051 33 564 569 573 -1052 35 570 569 571 -1053 8 570 569 573 -1054 8 571 569 573 +1051 33 573 569 564 +1052 35 571 569 570 +1053 8 573 569 570 +1054 8 573 569 571 1055 12 569 570 572 1056 13 569 570 574 1057 13 569 570 575 1058 14 572 570 574 1059 14 572 570 575 -1060 15 574 570 575 +1060 15 575 570 574 1061 13 569 571 576 1062 13 569 571 577 1063 13 569 571 578 -1064 15 576 571 577 -1065 15 576 571 578 -1066 15 577 571 578 +1064 15 577 571 576 +1065 15 578 571 576 +1066 15 578 571 577 1067 14 570 572 579 1068 14 570 572 580 1069 14 570 572 581 -1070 15 579 572 580 -1071 15 579 572 581 -1072 15 580 572 581 +1070 15 580 572 579 +1071 15 581 572 579 +1072 15 581 572 580 1073 65 565 582 583 1074 66 565 582 589 1075 67 583 582 589 -1076 68 582 583 584 -1077 69 582 583 586 +1076 68 584 583 582 +1077 69 586 583 582 1078 70 582 583 587 1079 6 584 583 586 1080 71 584 583 587 1081 72 586 583 587 -1082 9 583 584 585 +1082 9 585 584 583 1083 63 583 584 596 1084 64 585 584 596 1085 73 583 587 588 1086 74 583 587 590 1087 74 583 587 591 -1088 75 588 587 590 -1089 75 588 587 591 -1090 76 590 587 591 -1091 77 587 588 589 -1092 75 587 588 592 -1093 75 587 588 593 -1094 75 589 588 592 -1095 75 589 588 593 -1096 76 592 588 593 +1088 75 590 587 588 +1089 75 591 587 588 +1090 76 591 587 590 +1091 77 589 588 587 +1092 75 592 588 587 +1093 75 593 588 587 +1094 75 592 588 589 +1095 75 593 588 589 +1096 76 593 588 592 1097 78 582 589 588 -1098 79 582 589 594 -1099 79 582 589 595 -1100 80 588 589 594 -1101 80 588 589 595 -1102 81 594 589 595 +1098 79 594 589 582 +1099 79 595 589 582 +1100 80 594 589 588 +1101 80 595 589 588 +1102 81 595 589 594 1103 65 584 596 597 1104 66 584 596 603 1105 67 597 596 603 -1106 68 596 597 598 -1107 69 596 597 600 +1106 68 598 597 596 +1107 69 600 597 596 1108 70 596 597 601 1109 6 598 597 600 1110 71 598 597 601 1111 72 600 597 601 -1112 9 597 598 599 -1113 10 597 598 610 -1114 11 599 598 610 +1112 9 599 598 597 +1113 10 610 598 597 +1114 11 610 598 599 1115 73 597 601 602 1116 74 597 601 604 1117 74 597 601 605 -1118 75 602 601 604 -1119 75 602 601 605 -1120 76 604 601 605 -1121 77 601 602 603 -1122 75 601 602 606 -1123 75 601 602 607 -1124 75 603 602 606 -1125 75 603 602 607 -1126 76 606 602 607 +1118 75 604 601 602 +1119 75 605 601 602 +1120 76 605 601 604 +1121 77 603 602 601 +1122 75 606 602 601 +1123 75 607 602 601 +1124 75 606 602 603 +1125 75 607 602 603 +1126 76 607 602 606 1127 78 596 603 602 -1128 79 596 603 608 -1129 79 596 603 609 -1130 80 602 603 608 -1131 80 602 603 609 -1132 81 608 603 609 +1128 79 608 603 596 +1129 79 609 603 596 +1130 80 608 603 602 +1131 80 609 603 602 +1132 81 609 603 608 1133 20 598 610 611 1134 21 598 610 614 -1135 22 611 610 614 +1135 22 614 610 611 1136 23 610 611 612 1137 24 610 611 615 1138 25 610 611 616 1139 6 612 611 615 1140 7 612 611 616 1141 8 615 611 616 -1142 9 611 612 613 -1143 10 611 612 622 -1144 11 613 612 622 +1142 9 613 612 611 +1143 10 622 612 611 +1144 11 622 612 613 1145 85 611 616 617 1146 13 611 616 620 1147 13 611 616 621 -1148 60 617 616 620 -1149 60 617 616 621 -1150 15 620 616 621 +1148 60 620 616 617 +1149 60 621 616 617 +1150 15 621 616 620 1151 61 616 617 618 1152 61 616 617 619 -1153 62 618 617 619 +1153 62 619 617 618 1154 20 612 622 623 1155 21 612 622 626 -1156 22 623 622 626 +1156 22 626 622 623 1157 23 622 623 624 1158 24 622 623 627 1159 25 622 623 628 1160 6 624 623 627 1161 7 624 623 628 1162 8 627 623 628 -1163 9 623 624 625 -1164 10 623 624 639 -1165 11 625 624 639 +1163 9 625 624 623 +1164 10 639 624 623 +1165 11 639 624 625 1166 12 623 628 629 1167 13 623 628 633 1168 13 623 628 634 1169 14 629 628 633 1170 14 629 628 634 -1171 15 633 628 634 -1172 26 628 629 630 +1171 15 634 628 633 +1172 26 630 629 628 1173 14 628 629 635 1174 14 628 629 636 1175 27 630 629 635 1176 27 630 629 636 -1177 15 635 629 636 -1178 28 629 630 631 -1179 29 629 630 632 -1180 11 631 630 632 +1177 15 636 629 635 +1178 28 631 630 629 +1179 29 632 630 629 +1180 11 632 630 631 1181 21 630 632 637 1182 21 630 632 638 -1183 30 637 632 638 +1183 30 638 632 637 1184 20 624 639 640 1185 21 624 639 643 -1186 22 640 639 643 +1186 22 643 639 640 1187 23 639 640 641 1188 24 639 640 644 1189 25 639 640 645 1190 6 641 640 644 1191 7 641 640 645 1192 8 644 640 645 -1193 9 640 641 642 -1194 10 640 641 656 -1195 11 642 641 656 +1193 9 642 641 640 +1194 10 656 641 640 +1195 11 656 641 642 1196 12 640 645 646 1197 13 640 645 650 1198 13 640 645 651 1199 14 646 645 650 1200 14 646 645 651 -1201 15 650 645 651 -1202 26 645 646 647 +1201 15 651 645 650 +1202 26 647 646 645 1203 14 645 646 652 1204 14 645 646 653 1205 27 647 646 652 1206 27 647 646 653 -1207 15 652 646 653 -1208 28 646 647 648 -1209 29 646 647 649 -1210 11 648 647 649 +1207 15 653 646 652 +1208 28 648 647 646 +1209 29 649 647 646 +1210 11 649 647 648 1211 21 647 649 654 1212 21 647 649 655 -1213 30 654 649 655 +1213 30 655 649 654 1214 20 641 656 657 1215 21 641 656 660 -1216 22 657 656 660 +1216 22 660 656 657 1217 23 656 657 658 1218 24 656 657 661 1219 25 656 657 662 1220 6 658 657 661 1221 7 658 657 662 1222 8 661 657 662 -1223 9 657 658 659 -1224 10 657 658 680 -1225 11 659 658 680 +1223 9 659 658 657 +1224 10 680 658 657 +1225 11 680 658 659 1226 12 657 662 663 1227 13 657 662 669 1228 13 657 662 670 1229 14 663 662 669 1230 14 663 662 670 -1231 15 669 662 670 -1232 41 662 663 664 +1231 15 670 662 669 +1232 41 664 663 662 1233 14 662 663 671 1234 14 662 663 672 1235 14 664 663 671 1236 14 664 663 672 -1237 15 671 663 672 -1238 87 663 664 665 +1237 15 672 663 671 +1238 87 665 664 663 1239 14 663 664 673 1240 14 663 664 674 1241 88 665 664 673 1242 88 665 664 674 -1243 15 673 664 674 +1243 15 674 664 673 1244 89 664 665 666 1245 90 664 665 675 -1246 91 666 665 675 -1247 92 665 666 667 -1248 92 665 666 668 -1249 92 667 666 668 -1250 91 666 667 676 -1251 91 666 667 677 -1252 93 676 667 677 -1253 91 666 668 678 -1254 91 666 668 679 -1255 93 678 668 679 +1246 91 675 665 666 +1247 92 667 666 665 +1248 92 668 666 665 +1249 92 668 666 667 +1250 91 676 667 666 +1251 91 677 667 666 +1252 93 677 667 676 +1253 91 678 668 666 +1254 91 679 668 666 +1255 93 679 668 678 1256 20 658 680 681 1257 21 658 680 684 -1258 22 681 680 684 +1258 22 684 680 681 1259 23 680 681 682 1260 24 680 681 685 1261 25 680 681 686 1262 6 682 681 685 1263 7 682 681 686 1264 8 685 681 686 -1265 9 681 682 683 -1266 10 681 682 699 -1267 11 683 682 699 -1268 50 681 686 687 +1265 9 683 682 681 +1266 10 699 682 681 +1267 11 699 682 683 +1268 50 687 686 681 1269 13 681 686 690 1270 13 681 686 691 1271 13 687 686 690 1272 13 687 686 691 -1273 15 690 686 691 -1274 35 686 687 688 -1275 35 686 687 689 -1276 8 686 687 692 -1277 35 688 687 689 -1278 8 688 687 692 -1279 8 689 687 692 +1273 15 691 686 690 +1274 35 688 687 686 +1275 35 689 687 686 +1276 8 692 687 686 +1277 35 689 687 688 +1278 8 692 687 688 +1279 8 692 687 689 1280 13 687 688 693 1281 13 687 688 694 1282 13 687 688 695 -1283 15 693 688 694 -1284 15 693 688 695 -1285 15 694 688 695 +1283 15 694 688 693 +1284 15 695 688 693 +1285 15 695 688 694 1286 13 687 689 696 1287 13 687 689 697 1288 13 687 689 698 -1289 15 696 689 697 -1290 15 696 689 698 -1291 15 697 689 698 +1289 15 697 689 696 +1290 15 698 689 696 +1291 15 698 689 697 1292 20 682 699 700 1293 21 682 699 703 -1294 22 700 699 703 +1294 22 703 699 700 1295 23 699 700 701 1296 24 699 700 704 1297 31 699 700 705 1298 6 701 700 704 1299 32 701 700 705 1300 33 704 700 705 -1301 9 700 701 702 -1302 10 700 701 718 -1303 11 702 701 718 +1301 9 702 701 700 +1302 10 718 701 700 +1303 11 718 701 702 1304 34 700 705 706 1305 34 700 705 707 -1306 33 700 705 709 -1307 35 706 705 707 -1308 8 706 705 709 -1309 8 707 705 709 +1306 33 709 705 700 +1307 35 707 705 706 +1308 8 709 705 706 +1309 8 709 705 707 1310 12 705 706 708 1311 13 705 706 710 1312 13 705 706 711 1313 14 708 706 710 1314 14 708 706 711 -1315 15 710 706 711 +1315 15 711 706 710 1316 13 705 707 712 1317 13 705 707 713 1318 13 705 707 714 -1319 15 712 707 713 -1320 15 712 707 714 -1321 15 713 707 714 +1319 15 713 707 712 +1320 15 714 707 712 +1321 15 714 707 713 1322 14 706 708 715 1323 14 706 708 716 1324 14 706 708 717 -1325 15 715 708 716 -1326 15 715 708 717 -1327 15 716 708 717 +1325 15 716 708 715 +1326 15 717 708 715 +1327 15 717 708 716 1328 20 701 718 719 1329 21 701 718 722 -1330 22 719 718 722 +1330 22 722 718 719 1331 23 718 719 720 1332 24 718 719 723 1333 25 718 719 724 1334 6 720 719 723 1335 7 720 719 724 1336 8 723 719 724 -1337 9 719 720 721 -1338 10 719 720 738 -1339 11 721 720 738 +1337 9 721 720 719 +1338 10 738 720 719 +1339 11 738 720 721 1340 36 719 724 725 1341 13 719 724 731 1342 13 719 724 732 -1343 37 725 724 731 -1344 37 725 724 732 -1345 15 731 724 732 +1343 37 731 724 725 +1344 37 732 724 725 +1345 15 732 724 731 1346 38 724 725 726 1347 38 724 725 727 -1348 39 726 725 727 -1349 39 725 726 728 +1348 39 727 725 726 +1349 39 728 726 725 1350 40 725 726 733 1351 40 728 726 733 -1352 39 725 727 729 +1352 39 729 727 725 1353 40 725 727 734 1354 40 729 727 734 -1355 39 726 728 730 +1355 39 730 728 726 1356 40 726 728 735 1357 40 730 728 735 -1358 39 727 729 730 +1358 39 730 729 727 1359 40 727 729 736 1360 40 730 729 736 -1361 39 728 730 729 +1361 39 729 730 728 1362 40 728 730 737 1363 40 729 730 737 1364 20 720 738 739 1365 21 720 738 742 -1366 22 739 738 742 +1366 22 742 738 739 1367 23 738 739 740 1368 24 738 739 743 1369 25 738 739 744 1370 6 740 739 743 1371 7 740 739 744 1372 8 743 739 744 -1373 9 739 740 741 -1374 10 739 740 748 -1375 11 741 740 748 +1373 9 741 740 739 +1374 10 748 740 739 +1375 11 748 740 741 1376 13 739 744 745 1377 13 739 744 746 1378 13 739 744 747 -1379 15 745 744 746 -1380 15 745 744 747 -1381 15 746 744 747 -1382 51 740 748 749 +1379 15 746 744 745 +1380 15 747 744 745 +1381 15 747 744 746 +1382 51 749 748 740 1383 21 740 748 752 1384 52 749 748 752 1385 53 748 749 750 @@ -18061,167 +18068,167 @@ Angles 1387 54 748 749 754 1388 55 750 749 753 1389 55 750 749 754 -1390 56 753 749 754 +1390 56 754 749 753 1391 57 749 750 751 -1392 58 749 750 755 -1393 11 751 750 755 +1392 58 755 750 749 +1393 11 755 750 751 1394 20 750 755 756 1395 21 750 755 759 -1396 22 756 755 759 +1396 22 759 755 756 1397 23 755 756 757 1398 24 755 756 760 1399 25 755 756 761 1400 6 757 756 760 1401 7 757 756 761 1402 8 760 756 761 -1403 9 756 757 758 -1404 10 756 757 777 -1405 11 758 757 777 +1403 9 758 757 756 +1404 10 777 757 756 +1405 11 777 757 758 1406 12 756 761 762 1407 13 756 761 766 1408 13 756 761 767 1409 14 762 761 766 1410 14 762 761 767 -1411 15 766 761 767 -1412 41 761 762 763 +1411 15 767 761 766 +1412 41 763 762 761 1413 14 761 762 768 1414 14 761 762 769 1415 14 763 762 768 1416 14 763 762 769 -1417 15 768 762 769 -1418 41 762 763 764 +1417 15 769 762 768 +1418 41 764 763 762 1419 14 762 763 770 1420 14 762 763 771 1421 14 764 763 770 1422 14 764 763 771 -1423 15 770 763 771 +1423 15 771 763 770 1424 42 763 764 765 1425 14 763 764 772 1426 14 763 764 773 -1427 43 765 764 772 -1428 43 765 764 773 -1429 15 772 764 773 +1427 43 772 764 765 +1428 43 773 764 765 +1429 15 773 764 772 1430 44 764 765 774 1431 44 764 765 775 1432 44 764 765 776 -1433 45 774 765 775 -1434 45 774 765 776 -1435 45 775 765 776 +1433 45 775 765 774 +1434 45 776 765 774 +1435 45 776 765 775 1436 20 757 777 778 1437 21 757 777 781 -1438 22 778 777 781 +1438 22 781 777 778 1439 23 777 778 779 1440 24 777 778 782 1441 25 777 778 783 1442 6 779 778 782 1443 7 779 778 783 1444 8 782 778 783 -1445 9 778 779 780 -1446 10 778 779 794 -1447 11 780 779 794 +1445 9 780 779 778 +1446 10 794 779 778 +1447 11 794 779 780 1448 12 778 783 784 1449 13 778 783 788 1450 13 778 783 789 1451 14 784 783 788 1452 14 784 783 789 -1453 15 788 783 789 -1454 26 783 784 785 +1453 15 789 783 788 +1454 26 785 784 783 1455 14 783 784 790 1456 14 783 784 791 1457 27 785 784 790 1458 27 785 784 791 -1459 15 790 784 791 -1460 28 784 785 786 -1461 29 784 785 787 -1462 11 786 785 787 +1459 15 791 784 790 +1460 28 786 785 784 +1461 29 787 785 784 +1462 11 787 785 786 1463 21 785 787 792 1464 21 785 787 793 -1465 30 792 787 793 +1465 30 793 787 792 1466 20 779 794 795 1467 21 779 794 798 -1468 22 795 794 798 +1468 22 798 794 795 1469 23 794 795 796 1470 24 794 795 799 1471 25 794 795 800 1472 6 796 795 799 1473 7 796 795 800 1474 8 799 795 800 -1475 9 795 796 797 -1476 10 795 796 813 -1477 11 797 796 813 -1478 50 795 800 801 +1475 9 797 796 795 +1476 10 813 796 795 +1477 11 813 796 797 +1478 50 801 800 795 1479 13 795 800 804 1480 13 795 800 805 1481 13 801 800 804 1482 13 801 800 805 -1483 15 804 800 805 -1484 35 800 801 802 -1485 35 800 801 803 -1486 8 800 801 806 -1487 35 802 801 803 -1488 8 802 801 806 -1489 8 803 801 806 +1483 15 805 800 804 +1484 35 802 801 800 +1485 35 803 801 800 +1486 8 806 801 800 +1487 35 803 801 802 +1488 8 806 801 802 +1489 8 806 801 803 1490 13 801 802 807 1491 13 801 802 808 1492 13 801 802 809 -1493 15 807 802 808 -1494 15 807 802 809 -1495 15 808 802 809 +1493 15 808 802 807 +1494 15 809 802 807 +1495 15 809 802 808 1496 13 801 803 810 1497 13 801 803 811 1498 13 801 803 812 -1499 15 810 803 811 -1500 15 810 803 812 -1501 15 811 803 812 +1499 15 811 803 810 +1500 15 812 803 810 +1501 15 812 803 811 1502 20 796 813 814 1503 21 796 813 817 -1504 22 814 813 817 +1504 22 817 813 814 1505 23 813 814 815 1506 24 813 814 818 1507 25 813 814 819 1508 6 815 814 818 1509 7 815 814 819 1510 8 818 814 819 -1511 9 814 815 816 -1512 10 814 815 828 -1513 11 816 815 828 +1511 9 816 815 814 +1512 10 828 815 814 +1513 11 828 815 816 1514 12 814 819 820 1515 13 814 819 824 1516 13 814 819 825 1517 14 820 819 824 1518 14 820 819 825 -1519 15 824 819 825 +1519 15 825 819 824 1520 59 819 820 821 1521 14 819 820 826 1522 14 819 820 827 -1523 60 821 820 826 -1524 60 821 820 827 -1525 15 826 820 827 +1523 60 826 820 821 +1524 60 827 820 821 +1525 15 827 820 826 1526 61 820 821 822 1527 61 820 821 823 -1528 62 822 821 823 +1528 62 823 821 822 1529 20 815 828 829 1530 21 815 828 832 -1531 22 829 828 832 +1531 22 832 828 829 1532 23 828 829 830 1533 24 828 829 833 1534 25 828 829 834 1535 6 830 829 833 1536 7 830 829 834 1537 8 833 829 834 -1538 9 829 830 831 -1539 10 829 830 840 -1540 11 831 830 840 +1538 9 831 830 829 +1539 10 840 830 829 +1540 11 840 830 831 1541 85 829 834 835 1542 13 829 834 838 1543 13 829 834 839 -1544 60 835 834 838 -1545 60 835 834 839 -1546 15 838 834 839 +1544 60 838 834 835 +1545 60 839 834 835 +1546 15 839 834 838 1547 61 834 835 836 1548 61 834 835 837 -1549 62 836 835 837 -1550 51 830 840 841 +1549 62 837 835 836 +1550 51 841 840 830 1551 21 830 840 844 1552 52 841 840 844 1553 53 840 841 842 @@ -18229,685 +18236,685 @@ Angles 1555 54 840 841 846 1556 55 842 841 845 1557 55 842 841 846 -1558 56 845 841 846 +1558 56 846 841 845 1559 57 841 842 843 -1560 58 841 842 847 -1561 11 843 842 847 +1560 58 847 842 841 +1561 11 847 842 843 1562 20 842 847 848 1563 21 842 847 851 -1564 22 848 847 851 +1564 22 851 847 848 1565 23 847 848 849 1566 24 847 848 852 1567 25 847 848 853 1568 6 849 848 852 1569 7 849 848 853 1570 8 852 848 853 -1571 9 848 849 850 -1572 10 848 849 871 -1573 11 850 849 871 +1571 9 850 849 848 +1572 10 871 849 848 +1573 11 871 849 850 1574 12 848 853 854 1575 13 848 853 860 1576 13 848 853 861 1577 14 854 853 860 1578 14 854 853 861 -1579 15 860 853 861 -1580 41 853 854 855 +1579 15 861 853 860 +1580 41 855 854 853 1581 14 853 854 862 1582 14 853 854 863 1583 14 855 854 862 1584 14 855 854 863 -1585 15 862 854 863 -1586 87 854 855 856 +1585 15 863 854 862 +1586 87 856 855 854 1587 14 854 855 864 1588 14 854 855 865 1589 88 856 855 864 1590 88 856 855 865 -1591 15 864 855 865 +1591 15 865 855 864 1592 89 855 856 857 1593 90 855 856 866 -1594 91 857 856 866 -1595 92 856 857 858 -1596 92 856 857 859 -1597 92 858 857 859 -1598 91 857 858 867 -1599 91 857 858 868 -1600 93 867 858 868 -1601 91 857 859 869 -1602 91 857 859 870 -1603 93 869 859 870 +1594 91 866 856 857 +1595 92 858 857 856 +1596 92 859 857 856 +1597 92 859 857 858 +1598 91 867 858 857 +1599 91 868 858 857 +1600 93 868 858 867 +1601 91 869 859 857 +1602 91 870 859 857 +1603 93 870 859 869 1604 20 849 871 872 1605 21 849 871 875 -1606 22 872 871 875 +1606 22 875 871 872 1607 23 871 872 873 1608 24 871 872 876 1609 31 871 872 877 1610 6 873 872 876 1611 32 873 872 877 1612 33 876 872 877 -1613 9 872 873 874 -1614 10 872 873 885 -1615 11 874 873 885 +1613 9 874 873 872 +1614 10 885 873 872 +1615 11 885 873 874 1616 46 872 877 878 1617 34 872 877 879 -1618 33 872 877 880 -1619 47 878 877 879 -1620 48 878 877 880 -1621 8 879 877 880 +1618 33 880 877 872 +1619 47 879 877 878 +1620 48 880 877 878 +1621 8 880 877 879 1622 49 877 878 881 1623 13 877 879 882 1624 13 877 879 883 1625 13 877 879 884 -1626 15 882 879 883 -1627 15 882 879 884 -1628 15 883 879 884 +1626 15 883 879 882 +1627 15 884 879 882 +1628 15 884 879 883 1629 20 873 885 886 1630 21 873 885 889 -1631 22 886 885 889 +1631 22 889 885 886 1632 23 885 886 887 1633 24 885 886 890 1634 25 885 886 891 1635 6 887 886 890 1636 7 887 886 891 1637 8 890 886 891 -1638 9 886 887 888 -1639 10 886 887 904 -1640 11 888 887 904 -1641 50 886 891 892 +1638 9 888 887 886 +1639 10 904 887 886 +1640 11 904 887 888 +1641 50 892 891 886 1642 13 886 891 895 1643 13 886 891 896 1644 13 892 891 895 1645 13 892 891 896 -1646 15 895 891 896 -1647 35 891 892 893 -1648 35 891 892 894 -1649 8 891 892 897 -1650 35 893 892 894 -1651 8 893 892 897 -1652 8 894 892 897 +1646 15 896 891 895 +1647 35 893 892 891 +1648 35 894 892 891 +1649 8 897 892 891 +1650 35 894 892 893 +1651 8 897 892 893 +1652 8 897 892 894 1653 13 892 893 898 1654 13 892 893 899 1655 13 892 893 900 -1656 15 898 893 899 -1657 15 898 893 900 -1658 15 899 893 900 +1656 15 899 893 898 +1657 15 900 893 898 +1658 15 900 893 899 1659 13 892 894 901 1660 13 892 894 902 1661 13 892 894 903 -1662 15 901 894 902 -1663 15 901 894 903 -1664 15 902 894 903 +1662 15 902 894 901 +1663 15 903 894 901 +1664 15 903 894 902 1665 20 887 904 905 1666 21 887 904 908 -1667 22 905 904 908 +1667 22 908 904 905 1668 23 904 905 906 1669 24 904 905 909 1670 25 904 905 910 1671 6 906 905 909 1672 7 906 905 910 1673 8 909 905 910 -1674 9 905 906 907 -1675 10 905 906 915 -1676 11 907 906 915 +1674 9 907 906 905 +1675 10 915 906 905 +1676 11 915 906 907 1677 82 905 910 911 1678 13 905 910 912 1679 13 905 910 913 -1680 83 911 910 912 -1681 83 911 910 913 -1682 15 912 910 913 +1680 83 912 910 911 +1681 83 913 910 911 +1682 15 913 910 912 1683 84 910 911 914 1684 20 906 915 916 1685 21 906 915 919 -1686 22 916 915 919 +1686 22 919 915 916 1687 23 915 916 917 1688 24 915 916 920 1689 25 915 916 921 1690 6 917 916 920 1691 7 917 916 921 1692 8 920 916 921 -1693 9 916 917 918 -1694 10 916 917 927 -1695 11 918 917 927 +1693 9 918 917 916 +1694 10 927 917 916 +1695 11 927 917 918 1696 85 916 921 922 1697 13 916 921 925 1698 13 916 921 926 -1699 60 922 921 925 -1700 60 922 921 926 -1701 15 925 921 926 +1699 60 925 921 922 +1700 60 926 921 922 +1701 15 926 921 925 1702 61 921 922 923 1703 61 921 922 924 -1704 62 923 922 924 +1704 62 924 922 923 1705 20 917 927 928 1706 21 917 927 931 -1707 22 928 927 931 +1707 22 931 927 928 1708 23 927 928 929 1709 24 927 928 932 1710 25 927 928 933 1711 6 929 928 932 1712 7 929 928 933 1713 8 932 928 933 -1714 9 928 929 930 -1715 10 928 929 948 -1716 11 930 929 948 +1714 9 930 929 928 +1715 10 948 929 928 +1716 11 948 929 930 1717 36 928 933 934 1718 13 928 933 941 1719 13 928 933 942 -1720 37 934 933 941 -1721 37 934 933 942 -1722 15 941 933 942 +1720 37 941 933 934 +1721 37 942 933 934 +1722 15 942 933 941 1723 38 933 934 935 1724 38 933 934 936 -1725 39 935 934 936 -1726 39 934 935 937 +1725 39 936 934 935 +1726 39 937 935 934 1727 40 934 935 943 1728 40 937 935 943 -1729 39 934 936 938 +1729 39 938 936 934 1730 40 934 936 944 1731 40 938 936 944 -1732 39 935 937 939 +1732 39 939 937 935 1733 40 935 937 945 1734 40 939 937 945 -1735 39 936 938 939 +1735 39 939 938 936 1736 40 936 938 946 1737 40 939 938 946 -1738 39 937 939 938 +1738 39 938 939 937 1739 94 937 939 940 1740 94 938 939 940 1741 95 939 940 947 1742 20 929 948 949 1743 21 929 948 952 -1744 22 949 948 952 +1744 22 952 948 949 1745 23 948 949 950 1746 24 948 949 953 1747 25 948 949 954 1748 6 950 949 953 1749 7 950 949 954 1750 8 953 949 954 -1751 9 949 950 951 -1752 10 949 950 962 -1753 11 951 950 962 -1754 86 949 954 955 +1751 9 951 950 949 +1752 10 962 950 949 +1753 11 962 950 951 +1754 86 955 954 949 1755 13 949 954 958 1756 13 949 954 959 1757 27 955 954 958 1758 27 955 954 959 -1759 15 958 954 959 -1760 28 954 955 956 -1761 29 954 955 957 -1762 11 956 955 957 +1759 15 959 954 958 +1760 28 956 955 954 +1761 29 957 955 954 +1762 11 957 955 956 1763 21 955 957 960 1764 21 955 957 961 -1765 30 960 957 961 +1765 30 961 957 960 1766 20 950 962 963 1767 21 950 962 966 -1768 22 963 962 966 +1768 22 966 962 963 1769 23 962 963 964 1770 24 962 963 967 1771 31 962 963 968 1772 6 964 963 967 1773 32 964 963 968 1774 33 967 963 968 -1775 9 963 964 965 -1776 10 963 964 981 -1777 11 965 964 981 +1775 9 965 964 963 +1776 10 981 964 963 +1777 11 981 964 965 1778 34 963 968 969 1779 34 963 968 970 -1780 33 963 968 972 -1781 35 969 968 970 -1782 8 969 968 972 -1783 8 970 968 972 +1780 33 972 968 963 +1781 35 970 968 969 +1782 8 972 968 969 +1783 8 972 968 970 1784 12 968 969 971 1785 13 968 969 973 1786 13 968 969 974 1787 14 971 969 973 1788 14 971 969 974 -1789 15 973 969 974 +1789 15 974 969 973 1790 13 968 970 975 1791 13 968 970 976 1792 13 968 970 977 -1793 15 975 970 976 -1794 15 975 970 977 -1795 15 976 970 977 +1793 15 976 970 975 +1794 15 977 970 975 +1795 15 977 970 976 1796 14 969 971 978 1797 14 969 971 979 1798 14 969 971 980 -1799 15 978 971 979 -1800 15 978 971 980 -1801 15 979 971 980 +1799 15 979 971 978 +1800 15 980 971 978 +1801 15 980 971 979 1802 20 964 981 982 1803 21 964 981 985 -1804 22 982 981 985 +1804 22 985 981 982 1805 23 981 982 983 1806 24 981 982 986 1807 25 981 982 987 1808 6 983 982 986 1809 7 983 982 987 1810 8 986 982 987 -1811 9 982 983 984 -1812 10 982 983 998 -1813 11 984 983 998 +1811 9 984 983 982 +1812 10 998 983 982 +1813 11 998 983 984 1814 12 982 987 988 1815 13 982 987 992 1816 13 982 987 993 1817 14 988 987 992 1818 14 988 987 993 -1819 15 992 987 993 -1820 26 987 988 989 +1819 15 993 987 992 +1820 26 989 988 987 1821 14 987 988 994 1822 14 987 988 995 1823 27 989 988 994 1824 27 989 988 995 -1825 15 994 988 995 -1826 28 988 989 990 -1827 29 988 989 991 -1828 11 990 989 991 +1825 15 995 988 994 +1826 28 990 989 988 +1827 29 991 989 988 +1828 11 991 989 990 1829 21 989 991 996 1830 21 989 991 997 -1831 30 996 991 997 +1831 30 997 991 996 1832 20 983 998 999 1833 21 983 998 1002 -1834 22 999 998 1002 +1834 22 1002 998 999 1835 23 998 999 1000 1836 24 998 999 1003 1837 25 998 999 1004 1838 6 1000 999 1003 1839 7 1000 999 1004 1840 8 1003 999 1004 -1841 9 999 1000 1001 -1842 10 999 1000 1020 -1843 11 1001 1000 1020 +1841 9 1001 1000 999 +1842 10 1020 1000 999 +1843 11 1020 1000 1001 1844 12 999 1004 1005 1845 13 999 1004 1009 1846 13 999 1004 1010 1847 14 1005 1004 1009 1848 14 1005 1004 1010 -1849 15 1009 1004 1010 -1850 41 1004 1005 1006 +1849 15 1010 1004 1009 +1850 41 1006 1005 1004 1851 14 1004 1005 1011 1852 14 1004 1005 1012 1853 14 1006 1005 1011 1854 14 1006 1005 1012 -1855 15 1011 1005 1012 -1856 41 1005 1006 1007 +1855 15 1012 1005 1011 +1856 41 1007 1006 1005 1857 14 1005 1006 1013 1858 14 1005 1006 1014 1859 14 1007 1006 1013 1860 14 1007 1006 1014 -1861 15 1013 1006 1014 +1861 15 1014 1006 1013 1862 42 1006 1007 1008 1863 14 1006 1007 1015 1864 14 1006 1007 1016 -1865 43 1008 1007 1015 -1866 43 1008 1007 1016 -1867 15 1015 1007 1016 +1865 43 1015 1007 1008 +1866 43 1016 1007 1008 +1867 15 1016 1007 1015 1868 44 1007 1008 1017 1869 44 1007 1008 1018 1870 44 1007 1008 1019 -1871 45 1017 1008 1018 -1872 45 1017 1008 1019 -1873 45 1018 1008 1019 +1871 45 1018 1008 1017 +1872 45 1019 1008 1017 +1873 45 1019 1008 1018 1874 20 1000 1020 1021 1875 21 1000 1020 1024 -1876 22 1021 1020 1024 +1876 22 1024 1020 1021 1877 23 1020 1021 1022 1878 24 1020 1021 1025 1879 25 1020 1021 1026 1880 6 1022 1021 1025 1881 7 1022 1021 1026 1882 8 1025 1021 1026 -1883 9 1021 1022 1023 -1884 10 1021 1022 1035 -1885 11 1023 1022 1035 +1883 9 1023 1022 1021 +1884 10 1035 1022 1021 +1885 11 1035 1022 1023 1886 12 1021 1026 1027 1887 13 1021 1026 1031 1888 13 1021 1026 1032 1889 14 1027 1026 1031 1890 14 1027 1026 1032 -1891 15 1031 1026 1032 +1891 15 1032 1026 1031 1892 59 1026 1027 1028 1893 14 1026 1027 1033 1894 14 1026 1027 1034 -1895 60 1028 1027 1033 -1896 60 1028 1027 1034 -1897 15 1033 1027 1034 +1895 60 1033 1027 1028 +1896 60 1034 1027 1028 +1897 15 1034 1027 1033 1898 61 1027 1028 1029 1899 61 1027 1028 1030 -1900 62 1029 1028 1030 +1900 62 1030 1028 1029 1901 20 1022 1035 1036 1902 21 1022 1035 1039 -1903 22 1036 1035 1039 +1903 22 1039 1035 1036 1904 23 1035 1036 1037 1905 24 1035 1036 1040 1906 25 1035 1036 1041 1907 6 1037 1036 1040 1908 7 1037 1036 1041 1909 8 1040 1036 1041 -1910 9 1036 1037 1038 -1911 10 1036 1037 1046 -1912 11 1038 1037 1046 +1910 9 1038 1037 1036 +1911 10 1046 1037 1036 +1912 11 1046 1037 1038 1913 82 1036 1041 1042 1914 13 1036 1041 1043 1915 13 1036 1041 1044 -1916 83 1042 1041 1043 -1917 83 1042 1041 1044 -1918 15 1043 1041 1044 +1916 83 1043 1041 1042 +1917 83 1044 1041 1042 +1918 15 1044 1041 1043 1919 84 1041 1042 1045 1920 20 1037 1046 1047 1921 21 1037 1046 1050 -1922 22 1047 1046 1050 +1922 22 1050 1046 1047 1923 23 1046 1047 1048 1924 24 1046 1047 1051 1925 31 1046 1047 1052 1926 6 1048 1047 1051 1927 32 1048 1047 1052 1928 33 1051 1047 1052 -1929 9 1047 1048 1049 -1930 10 1047 1048 1060 -1931 11 1049 1048 1060 +1929 9 1049 1048 1047 +1930 10 1060 1048 1047 +1931 11 1060 1048 1049 1932 46 1047 1052 1053 1933 34 1047 1052 1054 -1934 33 1047 1052 1055 -1935 47 1053 1052 1054 -1936 48 1053 1052 1055 -1937 8 1054 1052 1055 +1934 33 1055 1052 1047 +1935 47 1054 1052 1053 +1936 48 1055 1052 1053 +1937 8 1055 1052 1054 1938 49 1052 1053 1056 1939 13 1052 1054 1057 1940 13 1052 1054 1058 1941 13 1052 1054 1059 -1942 15 1057 1054 1058 -1943 15 1057 1054 1059 -1944 15 1058 1054 1059 +1942 15 1058 1054 1057 +1943 15 1059 1054 1057 +1944 15 1059 1054 1058 1945 20 1048 1060 1061 1946 21 1048 1060 1064 -1947 22 1061 1060 1064 +1947 22 1064 1060 1061 1948 23 1060 1061 1062 1949 24 1060 1061 1065 1950 25 1060 1061 1066 1951 6 1062 1061 1065 1952 7 1062 1061 1066 1953 8 1065 1061 1066 -1954 9 1061 1062 1063 -1955 10 1061 1062 1079 -1956 11 1063 1062 1079 -1957 50 1061 1066 1067 +1954 9 1063 1062 1061 +1955 10 1079 1062 1061 +1956 11 1079 1062 1063 +1957 50 1067 1066 1061 1958 13 1061 1066 1070 1959 13 1061 1066 1071 1960 13 1067 1066 1070 1961 13 1067 1066 1071 -1962 15 1070 1066 1071 -1963 35 1066 1067 1068 -1964 35 1066 1067 1069 -1965 8 1066 1067 1072 -1966 35 1068 1067 1069 -1967 8 1068 1067 1072 -1968 8 1069 1067 1072 +1962 15 1071 1066 1070 +1963 35 1068 1067 1066 +1964 35 1069 1067 1066 +1965 8 1072 1067 1066 +1966 35 1069 1067 1068 +1967 8 1072 1067 1068 +1968 8 1072 1067 1069 1969 13 1067 1068 1073 1970 13 1067 1068 1074 1971 13 1067 1068 1075 -1972 15 1073 1068 1074 -1973 15 1073 1068 1075 -1974 15 1074 1068 1075 +1972 15 1074 1068 1073 +1973 15 1075 1068 1073 +1974 15 1075 1068 1074 1975 13 1067 1069 1076 1976 13 1067 1069 1077 1977 13 1067 1069 1078 -1978 15 1076 1069 1077 -1979 15 1076 1069 1078 -1980 15 1077 1069 1078 +1978 15 1077 1069 1076 +1979 15 1078 1069 1076 +1980 15 1078 1069 1077 1981 20 1062 1079 1080 1982 21 1062 1079 1083 -1983 22 1080 1079 1083 +1983 22 1083 1079 1080 1984 23 1079 1080 1081 1985 24 1079 1080 1084 1986 25 1079 1080 1085 1987 6 1081 1080 1084 1988 7 1081 1080 1085 1989 8 1084 1080 1085 -1990 9 1080 1081 1082 -1991 10 1080 1081 1097 -1992 11 1082 1081 1097 +1990 9 1082 1081 1080 +1991 10 1097 1081 1080 +1992 11 1097 1081 1082 1993 96 1080 1085 1086 1994 13 1080 1085 1091 1995 13 1080 1085 1092 -1996 97 1086 1085 1091 -1997 97 1086 1085 1092 -1998 15 1091 1085 1092 +1996 97 1091 1085 1086 +1997 97 1092 1085 1086 +1998 15 1092 1085 1091 1999 98 1085 1086 1087 2000 99 1085 1086 1088 2001 100 1087 1086 1088 2002 101 1086 1087 1089 -2003 102 1086 1087 1093 -2004 103 1089 1087 1093 -2005 100 1086 1088 1090 +2003 102 1093 1087 1086 +2004 103 1093 1087 1089 +2005 100 1090 1088 1086 2006 104 1086 1088 1094 2007 105 1090 1088 1094 -2008 106 1087 1089 1090 +2008 106 1090 1089 1087 2009 107 1087 1089 1095 2010 107 1090 1089 1095 2011 101 1088 1090 1089 -2012 102 1088 1090 1096 -2013 103 1089 1090 1096 +2012 102 1096 1090 1088 +2013 103 1096 1090 1089 2014 20 1081 1097 1098 2015 21 1081 1097 1101 -2016 22 1098 1097 1101 +2016 22 1101 1097 1098 2017 23 1097 1098 1099 2018 24 1097 1098 1102 2019 25 1097 1098 1103 2020 6 1099 1098 1102 2021 7 1099 1098 1103 2022 8 1102 1098 1103 -2023 9 1098 1099 1100 -2024 10 1098 1099 1116 -2025 11 1100 1099 1116 -2026 50 1098 1103 1104 +2023 9 1100 1099 1098 +2024 10 1116 1099 1098 +2025 11 1116 1099 1100 +2026 50 1104 1103 1098 2027 13 1098 1103 1107 2028 13 1098 1103 1108 2029 13 1104 1103 1107 2030 13 1104 1103 1108 -2031 15 1107 1103 1108 -2032 35 1103 1104 1105 -2033 35 1103 1104 1106 -2034 8 1103 1104 1109 -2035 35 1105 1104 1106 -2036 8 1105 1104 1109 -2037 8 1106 1104 1109 +2031 15 1108 1103 1107 +2032 35 1105 1104 1103 +2033 35 1106 1104 1103 +2034 8 1109 1104 1103 +2035 35 1106 1104 1105 +2036 8 1109 1104 1105 +2037 8 1109 1104 1106 2038 13 1104 1105 1110 2039 13 1104 1105 1111 2040 13 1104 1105 1112 -2041 15 1110 1105 1111 -2042 15 1110 1105 1112 -2043 15 1111 1105 1112 +2041 15 1111 1105 1110 +2042 15 1112 1105 1110 +2043 15 1112 1105 1111 2044 13 1104 1106 1113 2045 13 1104 1106 1114 2046 13 1104 1106 1115 -2047 15 1113 1106 1114 -2048 15 1113 1106 1115 -2049 15 1114 1106 1115 +2047 15 1114 1106 1113 +2048 15 1115 1106 1113 +2049 15 1115 1106 1114 2050 20 1099 1116 1117 2051 21 1099 1116 1120 -2052 22 1117 1116 1120 +2052 22 1120 1116 1117 2053 23 1116 1117 1118 2054 24 1116 1117 1121 2055 31 1116 1117 1122 2056 6 1118 1117 1121 2057 32 1118 1117 1122 2058 33 1121 1117 1122 -2059 9 1117 1118 1119 -2060 10 1117 1118 1132 -2061 11 1119 1118 1132 +2059 9 1119 1118 1117 +2060 10 1132 1118 1117 +2061 11 1132 1118 1119 2062 34 1117 1122 1123 2063 34 1117 1122 1124 -2064 33 1117 1122 1125 -2065 35 1123 1122 1124 -2066 8 1123 1122 1125 -2067 8 1124 1122 1125 +2064 33 1125 1122 1117 +2065 35 1124 1122 1123 +2066 8 1125 1122 1123 +2067 8 1125 1122 1124 2068 13 1122 1123 1126 2069 13 1122 1123 1127 2070 13 1122 1123 1128 -2071 15 1126 1123 1127 -2072 15 1126 1123 1128 -2073 15 1127 1123 1128 +2071 15 1127 1123 1126 +2072 15 1128 1123 1126 +2073 15 1128 1123 1127 2074 13 1122 1124 1129 2075 13 1122 1124 1130 2076 13 1122 1124 1131 -2077 15 1129 1124 1130 -2078 15 1129 1124 1131 -2079 15 1130 1124 1131 +2077 15 1130 1124 1129 +2078 15 1131 1124 1129 +2079 15 1131 1124 1130 2080 20 1118 1132 1133 2081 21 1118 1132 1136 -2082 22 1133 1132 1136 +2082 22 1136 1132 1133 2083 23 1132 1133 1134 2084 24 1132 1133 1137 2085 25 1132 1133 1138 2086 6 1134 1133 1137 2087 7 1134 1133 1138 2088 8 1137 1133 1138 -2089 9 1133 1134 1135 -2090 10 1133 1134 1151 -2091 11 1135 1134 1151 -2092 50 1133 1138 1139 +2089 9 1135 1134 1133 +2090 10 1151 1134 1133 +2091 11 1151 1134 1135 +2092 50 1139 1138 1133 2093 13 1133 1138 1142 2094 13 1133 1138 1143 2095 13 1139 1138 1142 2096 13 1139 1138 1143 -2097 15 1142 1138 1143 -2098 35 1138 1139 1140 -2099 35 1138 1139 1141 -2100 8 1138 1139 1144 -2101 35 1140 1139 1141 -2102 8 1140 1139 1144 -2103 8 1141 1139 1144 +2097 15 1143 1138 1142 +2098 35 1140 1139 1138 +2099 35 1141 1139 1138 +2100 8 1144 1139 1138 +2101 35 1141 1139 1140 +2102 8 1144 1139 1140 +2103 8 1144 1139 1141 2104 13 1139 1140 1145 2105 13 1139 1140 1146 2106 13 1139 1140 1147 -2107 15 1145 1140 1146 -2108 15 1145 1140 1147 -2109 15 1146 1140 1147 +2107 15 1146 1140 1145 +2108 15 1147 1140 1145 +2109 15 1147 1140 1146 2110 13 1139 1141 1148 2111 13 1139 1141 1149 2112 13 1139 1141 1150 -2113 15 1148 1141 1149 -2114 15 1148 1141 1150 -2115 15 1149 1141 1150 +2113 15 1149 1141 1148 +2114 15 1150 1141 1148 +2115 15 1150 1141 1149 2116 20 1134 1151 1152 2117 21 1134 1151 1155 -2118 22 1152 1151 1155 +2118 22 1155 1151 1152 2119 23 1151 1152 1153 2120 24 1151 1152 1156 2121 25 1151 1152 1157 2122 6 1153 1152 1156 2123 7 1153 1152 1157 2124 8 1156 1152 1157 -2125 9 1152 1153 1154 -2126 10 1152 1153 1175 -2127 11 1154 1153 1175 +2125 9 1154 1153 1152 +2126 10 1175 1153 1152 +2127 11 1175 1153 1154 2128 12 1152 1157 1158 2129 13 1152 1157 1164 2130 13 1152 1157 1165 2131 14 1158 1157 1164 2132 14 1158 1157 1165 -2133 15 1164 1157 1165 -2134 41 1157 1158 1159 +2133 15 1165 1157 1164 +2134 41 1159 1158 1157 2135 14 1157 1158 1166 2136 14 1157 1158 1167 2137 14 1159 1158 1166 2138 14 1159 1158 1167 -2139 15 1166 1158 1167 -2140 87 1158 1159 1160 +2139 15 1167 1158 1166 +2140 87 1160 1159 1158 2141 14 1158 1159 1168 2142 14 1158 1159 1169 2143 88 1160 1159 1168 2144 88 1160 1159 1169 -2145 15 1168 1159 1169 +2145 15 1169 1159 1168 2146 89 1159 1160 1161 2147 90 1159 1160 1170 -2148 91 1161 1160 1170 -2149 92 1160 1161 1162 -2150 92 1160 1161 1163 -2151 92 1162 1161 1163 -2152 91 1161 1162 1171 -2153 91 1161 1162 1172 -2154 93 1171 1162 1172 -2155 91 1161 1163 1173 -2156 91 1161 1163 1174 -2157 93 1173 1163 1174 +2148 91 1170 1160 1161 +2149 92 1162 1161 1160 +2150 92 1163 1161 1160 +2151 92 1163 1161 1162 +2152 91 1171 1162 1161 +2153 91 1172 1162 1161 +2154 93 1172 1162 1171 +2155 91 1173 1163 1161 +2156 91 1174 1163 1161 +2157 93 1174 1163 1173 2158 20 1153 1175 1176 2159 21 1153 1175 1179 -2160 22 1176 1175 1179 +2160 22 1179 1175 1176 2161 23 1175 1176 1177 2162 24 1175 1176 1180 2163 25 1175 1176 1181 2164 6 1177 1176 1180 2165 7 1177 1176 1181 2166 8 1180 1176 1181 -2167 9 1176 1177 1178 -2168 10 1176 1177 1194 -2169 11 1178 1177 1194 -2170 50 1176 1181 1182 +2167 9 1178 1177 1176 +2168 10 1194 1177 1176 +2169 11 1194 1177 1178 +2170 50 1182 1181 1176 2171 13 1176 1181 1185 2172 13 1176 1181 1186 2173 13 1182 1181 1185 2174 13 1182 1181 1186 -2175 15 1185 1181 1186 -2176 35 1181 1182 1183 -2177 35 1181 1182 1184 -2178 8 1181 1182 1187 -2179 35 1183 1182 1184 -2180 8 1183 1182 1187 -2181 8 1184 1182 1187 +2175 15 1186 1181 1185 +2176 35 1183 1182 1181 +2177 35 1184 1182 1181 +2178 8 1187 1182 1181 +2179 35 1184 1182 1183 +2180 8 1187 1182 1183 +2181 8 1187 1182 1184 2182 13 1182 1183 1188 2183 13 1182 1183 1189 2184 13 1182 1183 1190 -2185 15 1188 1183 1189 -2186 15 1188 1183 1190 -2187 15 1189 1183 1190 +2185 15 1189 1183 1188 +2186 15 1190 1183 1188 +2187 15 1190 1183 1189 2188 13 1182 1184 1191 2189 13 1182 1184 1192 2190 13 1182 1184 1193 -2191 15 1191 1184 1192 -2192 15 1191 1184 1193 -2193 15 1192 1184 1193 +2191 15 1192 1184 1191 +2192 15 1193 1184 1191 +2193 15 1193 1184 1192 2194 20 1177 1194 1195 2195 21 1177 1194 1198 -2196 22 1195 1194 1198 +2196 22 1198 1194 1195 2197 23 1194 1195 1196 2198 24 1194 1195 1199 2199 25 1194 1195 1200 2200 6 1196 1195 1199 2201 7 1196 1195 1200 2202 8 1199 1195 1200 -2203 9 1195 1196 1197 -2204 10 1195 1196 1218 -2205 11 1197 1196 1218 +2203 9 1197 1196 1195 +2204 10 1218 1196 1195 +2205 11 1218 1196 1197 2206 12 1195 1200 1201 2207 13 1195 1200 1207 2208 13 1195 1200 1208 2209 14 1201 1200 1207 2210 14 1201 1200 1208 -2211 15 1207 1200 1208 -2212 41 1200 1201 1202 +2211 15 1208 1200 1207 +2212 41 1202 1201 1200 2213 14 1200 1201 1209 2214 14 1200 1201 1210 2215 14 1202 1201 1209 2216 14 1202 1201 1210 -2217 15 1209 1201 1210 -2218 87 1201 1202 1203 +2217 15 1210 1201 1209 +2218 87 1203 1202 1201 2219 14 1201 1202 1211 2220 14 1201 1202 1212 2221 88 1203 1202 1211 2222 88 1203 1202 1212 -2223 15 1211 1202 1212 +2223 15 1212 1202 1211 2224 89 1202 1203 1204 2225 90 1202 1203 1213 -2226 91 1204 1203 1213 -2227 92 1203 1204 1205 -2228 92 1203 1204 1206 -2229 92 1205 1204 1206 -2230 91 1204 1205 1214 -2231 91 1204 1205 1215 -2232 93 1214 1205 1215 -2233 91 1204 1206 1216 -2234 91 1204 1206 1217 -2235 93 1216 1206 1217 -2236 51 1196 1218 1219 +2226 91 1213 1203 1204 +2227 92 1205 1204 1203 +2228 92 1206 1204 1203 +2229 92 1206 1204 1205 +2230 91 1214 1205 1204 +2231 91 1215 1205 1204 +2232 93 1215 1205 1214 +2233 91 1216 1206 1204 +2234 91 1217 1206 1204 +2235 93 1217 1206 1216 +2236 51 1219 1218 1196 2237 21 1196 1218 1222 2238 52 1219 1218 1222 2239 53 1218 1219 1220 @@ -18915,2857 +18922,6811 @@ Angles 2241 54 1218 1219 1224 2242 55 1220 1219 1223 2243 55 1220 1219 1224 -2244 56 1223 1219 1224 +2244 56 1224 1219 1223 2245 57 1219 1220 1221 -2246 58 1219 1220 1225 -2247 11 1221 1220 1225 -2248 51 1220 1225 1226 +2246 58 1225 1220 1219 +2247 11 1225 1220 1221 +2248 51 1226 1225 1220 2249 21 1220 1225 1229 2250 52 1226 1225 1229 2251 108 1225 1226 1227 2252 54 1225 1226 1230 2253 54 1225 1226 1231 -2254 109 1227 1226 1230 -2255 109 1227 1226 1231 -2256 56 1230 1226 1231 +2254 109 1230 1226 1227 +2255 109 1231 1226 1227 +2256 56 1231 1226 1230 2257 110 1226 1227 1228 2258 110 1226 1227 1232 -2259 62 1228 1227 1232 -2260 111 1234 1233 1235 -2261 111 1237 1236 1238 -2262 111 1240 1239 1241 -2263 111 1243 1242 1244 -2264 111 1246 1245 1247 -2265 111 1249 1248 1250 -2266 111 1252 1251 1253 -2267 111 1255 1254 1256 -2268 111 1258 1257 1259 -2269 111 1261 1260 1262 -2270 111 1264 1263 1265 -2271 111 1267 1266 1268 -2272 111 1270 1269 1271 -2273 111 1273 1272 1274 -2274 111 1276 1275 1277 -2275 111 1279 1278 1280 -2276 111 1282 1281 1283 -2277 111 1285 1284 1286 -2278 111 1288 1287 1289 -2279 111 1291 1290 1292 -2280 111 1294 1293 1295 -2281 111 1297 1296 1298 -2282 111 1300 1299 1301 -2283 111 1303 1302 1304 -2284 111 1306 1305 1307 -2285 111 1309 1308 1310 -2286 111 1312 1311 1313 -2287 111 1315 1314 1316 -2288 111 1318 1317 1319 -2289 111 1321 1320 1322 -2290 111 1324 1323 1325 -2291 111 1327 1326 1328 -2292 111 1330 1329 1331 -2293 111 1333 1332 1334 -2294 111 1336 1335 1337 -2295 111 1339 1338 1340 -2296 111 1342 1341 1343 -2297 111 1345 1344 1346 -2298 111 1348 1347 1349 -2299 111 1351 1350 1352 -2300 111 1354 1353 1355 -2301 111 1357 1356 1358 -2302 111 1360 1359 1361 -2303 111 1363 1362 1364 -2304 111 1366 1365 1367 -2305 111 1369 1368 1370 -2306 111 1372 1371 1373 -2307 111 1375 1374 1376 -2308 111 1378 1377 1379 -2309 111 1381 1380 1382 -2310 111 1384 1383 1385 -2311 111 1387 1386 1388 -2312 111 1390 1389 1391 -2313 111 1393 1392 1394 -2314 111 1396 1395 1397 -2315 111 1399 1398 1400 -2316 111 1402 1401 1403 -2317 111 1405 1404 1406 -2318 111 1408 1407 1409 -2319 111 1411 1410 1412 -2320 111 1414 1413 1415 -2321 111 1417 1416 1418 -2322 111 1420 1419 1421 -2323 111 1423 1422 1424 -2324 111 1426 1425 1427 -2325 111 1429 1428 1430 -2326 111 1432 1431 1433 -2327 111 1435 1434 1436 -2328 111 1438 1437 1439 -2329 111 1441 1440 1442 -2330 111 1444 1443 1445 -2331 111 1447 1446 1448 -2332 111 1450 1449 1451 -2333 111 1453 1452 1454 -2334 111 1456 1455 1457 -2335 111 1459 1458 1460 -2336 111 1462 1461 1463 -2337 111 1465 1464 1466 -2338 111 1468 1467 1469 -2339 111 1471 1470 1472 -2340 111 1474 1473 1475 -2341 111 1477 1476 1478 -2342 111 1480 1479 1481 -2343 111 1483 1482 1484 -2344 111 1486 1485 1487 -2345 111 1489 1488 1490 -2346 111 1492 1491 1493 -2347 111 1495 1494 1496 -2348 111 1498 1497 1499 -2349 111 1501 1500 1502 -2350 111 1504 1503 1505 -2351 111 1507 1506 1508 -2352 111 1510 1509 1511 -2353 111 1513 1512 1514 -2354 111 1516 1515 1517 -2355 111 1519 1518 1520 -2356 111 1522 1521 1523 -2357 111 1525 1524 1526 -2358 111 1528 1527 1529 -2359 111 1531 1530 1532 -2360 111 1534 1533 1535 -2361 111 1537 1536 1538 -2362 111 1540 1539 1541 -2363 111 1543 1542 1544 -2364 111 1546 1545 1547 -2365 111 1549 1548 1550 -2366 111 1552 1551 1553 -2367 111 1555 1554 1556 -2368 111 1558 1557 1559 -2369 111 1561 1560 1562 -2370 111 1564 1563 1565 -2371 111 1567 1566 1568 -2372 111 1570 1569 1571 -2373 111 1573 1572 1574 -2374 111 1576 1575 1577 -2375 111 1579 1578 1580 -2376 111 1582 1581 1583 -2377 111 1585 1584 1586 -2378 111 1588 1587 1589 -2379 111 1591 1590 1592 -2380 111 1594 1593 1595 -2381 111 1597 1596 1598 -2382 111 1600 1599 1601 -2383 111 1603 1602 1604 -2384 111 1606 1605 1607 -2385 111 1609 1608 1610 -2386 111 1612 1611 1613 -2387 111 1615 1614 1616 -2388 111 1618 1617 1619 -2389 111 1621 1620 1622 -2390 111 1624 1623 1625 -2391 111 1627 1626 1628 -2392 111 1630 1629 1631 -2393 111 1633 1632 1634 -2394 111 1636 1635 1637 -2395 111 1639 1638 1640 -2396 111 1642 1641 1643 -2397 111 1645 1644 1646 -2398 111 1648 1647 1649 -2399 111 1651 1650 1652 -2400 111 1654 1653 1655 -2401 111 1657 1656 1658 -2402 111 1660 1659 1661 -2403 111 1663 1662 1664 -2404 111 1666 1665 1667 -2405 111 1669 1668 1670 -2406 111 1672 1671 1673 -2407 111 1675 1674 1676 -2408 111 1678 1677 1679 -2409 111 1681 1680 1682 -2410 111 1684 1683 1685 -2411 111 1687 1686 1688 -2412 111 1690 1689 1691 -2413 111 1693 1692 1694 -2414 111 1696 1695 1697 -2415 111 1699 1698 1700 -2416 111 1702 1701 1703 -2417 111 1705 1704 1706 -2418 111 1708 1707 1709 -2419 111 1711 1710 1712 -2420 111 1714 1713 1715 -2421 111 1717 1716 1718 -2422 111 1720 1719 1721 -2423 111 1723 1722 1724 -2424 111 1726 1725 1727 -2425 111 1729 1728 1730 -2426 111 1732 1731 1733 -2427 111 1735 1734 1736 -2428 111 1738 1737 1739 -2429 111 1741 1740 1742 -2430 111 1744 1743 1745 -2431 111 1747 1746 1748 -2432 111 1750 1749 1751 -2433 111 1753 1752 1754 -2434 111 1756 1755 1757 -2435 111 1759 1758 1760 -2436 111 1762 1761 1763 -2437 111 1765 1764 1766 -2438 111 1768 1767 1769 -2439 111 1771 1770 1772 -2440 111 1774 1773 1775 -2441 111 1777 1776 1778 -2442 111 1780 1779 1781 -2443 111 1783 1782 1784 -2444 111 1786 1785 1787 -2445 111 1789 1788 1790 -2446 111 1792 1791 1793 -2447 111 1795 1794 1796 -2448 111 1798 1797 1799 -2449 111 1801 1800 1802 -2450 111 1804 1803 1805 -2451 111 1807 1806 1808 -2452 111 1810 1809 1811 -2453 111 1813 1812 1814 -2454 111 1816 1815 1817 -2455 111 1819 1818 1820 -2456 111 1822 1821 1823 -2457 111 1825 1824 1826 -2458 111 1828 1827 1829 -2459 111 1831 1830 1832 -2460 111 1834 1833 1835 -2461 111 1837 1836 1838 -2462 111 1840 1839 1841 -2463 111 1843 1842 1844 -2464 111 1846 1845 1847 -2465 111 1849 1848 1850 -2466 111 1852 1851 1853 -2467 111 1855 1854 1856 -2468 111 1858 1857 1859 -2469 111 1861 1860 1862 -2470 111 1864 1863 1865 -2471 111 1867 1866 1868 -2472 111 1870 1869 1871 -2473 111 1873 1872 1874 -2474 111 1876 1875 1877 -2475 111 1879 1878 1880 -2476 111 1882 1881 1883 -2477 111 1885 1884 1886 -2478 111 1888 1887 1889 -2479 111 1891 1890 1892 -2480 111 1894 1893 1895 -2481 111 1897 1896 1898 -2482 111 1900 1899 1901 -2483 111 1903 1902 1904 -2484 111 1906 1905 1907 -2485 111 1909 1908 1910 -2486 111 1912 1911 1913 -2487 111 1915 1914 1916 -2488 111 1918 1917 1919 -2489 111 1921 1920 1922 -2490 111 1924 1923 1925 -2491 111 1927 1926 1928 -2492 111 1930 1929 1931 -2493 111 1933 1932 1934 -2494 111 1936 1935 1937 -2495 111 1939 1938 1940 -2496 111 1942 1941 1943 -2497 111 1945 1944 1946 -2498 111 1948 1947 1949 -2499 111 1951 1950 1952 -2500 111 1954 1953 1955 -2501 111 1957 1956 1958 -2502 111 1960 1959 1961 -2503 111 1963 1962 1964 -2504 111 1966 1965 1967 -2505 111 1969 1968 1970 -2506 111 1972 1971 1973 -2507 111 1975 1974 1976 -2508 111 1978 1977 1979 -2509 111 1981 1980 1982 -2510 111 1984 1983 1985 -2511 111 1987 1986 1988 -2512 111 1990 1989 1991 -2513 111 1993 1992 1994 -2514 111 1996 1995 1997 -2515 111 1999 1998 2000 -2516 111 2002 2001 2003 -2517 111 2005 2004 2006 -2518 111 2008 2007 2009 -2519 111 2011 2010 2012 -2520 111 2014 2013 2015 -2521 111 2017 2016 2018 -2522 111 2020 2019 2021 -2523 111 2023 2022 2024 -2524 111 2026 2025 2027 -2525 111 2029 2028 2030 -2526 111 2032 2031 2033 -2527 111 2035 2034 2036 -2528 111 2038 2037 2039 -2529 111 2041 2040 2042 -2530 111 2044 2043 2045 -2531 111 2047 2046 2048 -2532 111 2050 2049 2051 -2533 111 2053 2052 2054 -2534 111 2056 2055 2057 -2535 111 2059 2058 2060 -2536 111 2062 2061 2063 -2537 111 2065 2064 2066 -2538 111 2068 2067 2069 -2539 111 2071 2070 2072 -2540 111 2074 2073 2075 -2541 111 2077 2076 2078 -2542 111 2080 2079 2081 -2543 111 2083 2082 2084 -2544 111 2086 2085 2087 -2545 111 2089 2088 2090 -2546 111 2092 2091 2093 -2547 111 2095 2094 2096 -2548 111 2098 2097 2099 -2549 111 2101 2100 2102 -2550 111 2104 2103 2105 -2551 111 2107 2106 2108 -2552 111 2110 2109 2111 -2553 111 2113 2112 2114 -2554 111 2116 2115 2117 -2555 111 2119 2118 2120 -2556 111 2122 2121 2123 -2557 111 2125 2124 2126 -2558 111 2128 2127 2129 -2559 111 2131 2130 2132 -2560 111 2134 2133 2135 -2561 111 2137 2136 2138 -2562 111 2140 2139 2141 -2563 111 2143 2142 2144 -2564 111 2146 2145 2147 -2565 111 2149 2148 2150 -2566 111 2152 2151 2153 -2567 111 2155 2154 2156 -2568 111 2158 2157 2159 -2569 111 2161 2160 2162 -2570 111 2164 2163 2165 -2571 111 2167 2166 2168 -2572 111 2170 2169 2171 -2573 111 2173 2172 2174 -2574 111 2176 2175 2177 -2575 111 2179 2178 2180 -2576 111 2182 2181 2183 -2577 111 2185 2184 2186 -2578 111 2188 2187 2189 -2579 111 2191 2190 2192 -2580 111 2194 2193 2195 -2581 111 2197 2196 2198 -2582 111 2200 2199 2201 -2583 111 2203 2202 2204 -2584 111 2206 2205 2207 -2585 111 2209 2208 2210 -2586 111 2212 2211 2213 -2587 111 2215 2214 2216 -2588 111 2218 2217 2219 -2589 111 2221 2220 2222 -2590 111 2224 2223 2225 -2591 111 2227 2226 2228 -2592 111 2230 2229 2231 -2593 111 2233 2232 2234 -2594 111 2236 2235 2237 -2595 111 2239 2238 2240 -2596 111 2242 2241 2243 -2597 111 2245 2244 2246 -2598 111 2248 2247 2249 -2599 111 2251 2250 2252 -2600 111 2254 2253 2255 -2601 111 2257 2256 2258 -2602 111 2260 2259 2261 -2603 111 2263 2262 2264 -2604 111 2266 2265 2267 -2605 111 2269 2268 2270 -2606 111 2272 2271 2273 -2607 111 2275 2274 2276 -2608 111 2278 2277 2279 -2609 111 2281 2280 2282 -2610 111 2284 2283 2285 -2611 111 2287 2286 2288 -2612 111 2290 2289 2291 -2613 111 2293 2292 2294 -2614 111 2296 2295 2297 -2615 111 2299 2298 2300 -2616 111 2302 2301 2303 -2617 111 2305 2304 2306 -2618 111 2308 2307 2309 -2619 111 2311 2310 2312 -2620 111 2314 2313 2315 -2621 111 2317 2316 2318 -2622 111 2320 2319 2321 -2623 111 2323 2322 2324 -2624 111 2326 2325 2327 -2625 111 2329 2328 2330 -2626 111 2332 2331 2333 -2627 111 2335 2334 2336 -2628 111 2338 2337 2339 -2629 111 2341 2340 2342 -2630 111 2344 2343 2345 -2631 111 2347 2346 2348 -2632 111 2350 2349 2351 -2633 111 2353 2352 2354 -2634 111 2356 2355 2357 -2635 111 2359 2358 2360 -2636 111 2362 2361 2363 -2637 111 2365 2364 2366 -2638 111 2368 2367 2369 -2639 111 2371 2370 2372 -2640 111 2374 2373 2375 -2641 111 2377 2376 2378 -2642 111 2380 2379 2381 -2643 111 2383 2382 2384 -2644 111 2386 2385 2387 -2645 111 2389 2388 2390 -2646 111 2392 2391 2393 -2647 111 2395 2394 2396 -2648 111 2398 2397 2399 -2649 111 2401 2400 2402 -2650 111 2404 2403 2405 -2651 111 2407 2406 2408 -2652 111 2410 2409 2411 -2653 111 2413 2412 2414 -2654 111 2416 2415 2417 -2655 111 2419 2418 2420 -2656 111 2422 2421 2423 -2657 111 2425 2424 2426 -2658 111 2428 2427 2429 -2659 111 2431 2430 2432 -2660 111 2434 2433 2435 -2661 111 2437 2436 2438 -2662 111 2440 2439 2441 -2663 111 2443 2442 2444 -2664 111 2446 2445 2447 -2665 111 2449 2448 2450 -2666 111 2452 2451 2453 -2667 111 2455 2454 2456 -2668 111 2458 2457 2459 -2669 111 2461 2460 2462 -2670 111 2464 2463 2465 -2671 111 2467 2466 2468 -2672 111 2470 2469 2471 -2673 111 2473 2472 2474 -2674 111 2476 2475 2477 -2675 111 2479 2478 2480 -2676 111 2482 2481 2483 -2677 111 2485 2484 2486 -2678 111 2488 2487 2489 -2679 111 2491 2490 2492 -2680 111 2494 2493 2495 -2681 111 2497 2496 2498 -2682 111 2500 2499 2501 -2683 111 2503 2502 2504 -2684 111 2506 2505 2507 -2685 111 2509 2508 2510 -2686 111 2512 2511 2513 -2687 111 2515 2514 2516 -2688 111 2518 2517 2519 -2689 111 2521 2520 2522 -2690 111 2524 2523 2525 -2691 111 2527 2526 2528 -2692 111 2530 2529 2531 -2693 111 2533 2532 2534 -2694 111 2536 2535 2537 -2695 111 2539 2538 2540 -2696 111 2542 2541 2543 -2697 111 2545 2544 2546 -2698 111 2548 2547 2549 -2699 111 2551 2550 2552 -2700 111 2554 2553 2555 -2701 111 2557 2556 2558 -2702 111 2560 2559 2561 -2703 111 2563 2562 2564 -2704 111 2566 2565 2567 -2705 111 2569 2568 2570 -2706 111 2572 2571 2573 -2707 111 2575 2574 2576 -2708 111 2578 2577 2579 -2709 111 2581 2580 2582 -2710 111 2584 2583 2585 -2711 111 2587 2586 2588 -2712 111 2590 2589 2591 -2713 111 2593 2592 2594 -2714 111 2596 2595 2597 -2715 111 2599 2598 2600 -2716 111 2602 2601 2603 -2717 111 2605 2604 2606 -2718 111 2608 2607 2609 -2719 111 2611 2610 2612 -2720 111 2614 2613 2615 -2721 111 2617 2616 2618 -2722 111 2620 2619 2621 -2723 111 2623 2622 2624 -2724 111 2626 2625 2627 -2725 111 2629 2628 2630 -2726 111 2632 2631 2633 -2727 111 2635 2634 2636 -2728 111 2638 2637 2639 -2729 111 2641 2640 2642 -2730 111 2644 2643 2645 -2731 111 2647 2646 2648 -2732 111 2650 2649 2651 -2733 111 2653 2652 2654 -2734 111 2656 2655 2657 -2735 111 2659 2658 2660 -2736 111 2662 2661 2663 -2737 111 2665 2664 2666 -2738 111 2668 2667 2669 -2739 111 2671 2670 2672 -2740 111 2674 2673 2675 -2741 111 2677 2676 2678 -2742 111 2680 2679 2681 -2743 111 2683 2682 2684 -2744 111 2686 2685 2687 -2745 111 2689 2688 2690 -2746 111 2692 2691 2693 -2747 111 2695 2694 2696 -2748 111 2698 2697 2699 -2749 111 2701 2700 2702 -2750 111 2704 2703 2705 -2751 111 2707 2706 2708 -2752 111 2710 2709 2711 -2753 111 2713 2712 2714 -2754 111 2716 2715 2717 -2755 111 2719 2718 2720 -2756 111 2722 2721 2723 -2757 111 2725 2724 2726 -2758 111 2728 2727 2729 -2759 111 2731 2730 2732 -2760 111 2734 2733 2735 -2761 111 2737 2736 2738 -2762 111 2740 2739 2741 -2763 111 2743 2742 2744 -2764 111 2746 2745 2747 -2765 111 2749 2748 2750 -2766 111 2752 2751 2753 -2767 111 2755 2754 2756 -2768 111 2758 2757 2759 -2769 111 2761 2760 2762 -2770 111 2764 2763 2765 -2771 111 2767 2766 2768 -2772 111 2770 2769 2771 -2773 111 2773 2772 2774 -2774 111 2776 2775 2777 -2775 111 2779 2778 2780 -2776 111 2782 2781 2783 -2777 111 2785 2784 2786 -2778 111 2788 2787 2789 -2779 111 2791 2790 2792 -2780 111 2794 2793 2795 -2781 111 2797 2796 2798 -2782 111 2800 2799 2801 -2783 111 2803 2802 2804 -2784 111 2806 2805 2807 -2785 111 2809 2808 2810 -2786 111 2812 2811 2813 -2787 111 2815 2814 2816 -2788 111 2818 2817 2819 -2789 111 2821 2820 2822 -2790 111 2824 2823 2825 -2791 111 2827 2826 2828 -2792 111 2830 2829 2831 -2793 111 2833 2832 2834 -2794 111 2836 2835 2837 -2795 111 2839 2838 2840 -2796 111 2842 2841 2843 -2797 111 2845 2844 2846 -2798 111 2848 2847 2849 -2799 111 2851 2850 2852 -2800 111 2854 2853 2855 -2801 111 2857 2856 2858 -2802 111 2860 2859 2861 -2803 111 2863 2862 2864 -2804 111 2866 2865 2867 -2805 111 2869 2868 2870 -2806 111 2872 2871 2873 -2807 111 2875 2874 2876 -2808 111 2878 2877 2879 -2809 111 2881 2880 2882 -2810 111 2884 2883 2885 -2811 111 2887 2886 2888 -2812 111 2890 2889 2891 -2813 111 2893 2892 2894 -2814 111 2896 2895 2897 -2815 111 2899 2898 2900 -2816 111 2902 2901 2903 -2817 111 2905 2904 2906 -2818 111 2908 2907 2909 -2819 111 2911 2910 2912 -2820 111 2914 2913 2915 -2821 111 2917 2916 2918 -2822 111 2920 2919 2921 -2823 111 2923 2922 2924 -2824 111 2926 2925 2927 -2825 111 2929 2928 2930 -2826 111 2932 2931 2933 -2827 111 2935 2934 2936 -2828 111 2938 2937 2939 -2829 111 2941 2940 2942 -2830 111 2944 2943 2945 -2831 111 2947 2946 2948 -2832 111 2950 2949 2951 -2833 111 2953 2952 2954 -2834 111 2956 2955 2957 -2835 111 2959 2958 2960 -2836 111 2962 2961 2963 -2837 111 2965 2964 2966 -2838 111 2968 2967 2969 -2839 111 2971 2970 2972 -2840 111 2974 2973 2975 -2841 111 2977 2976 2978 -2842 111 2980 2979 2981 -2843 111 2983 2982 2984 -2844 111 2986 2985 2987 -2845 111 2989 2988 2990 -2846 111 2992 2991 2993 -2847 111 2995 2994 2996 -2848 111 2998 2997 2999 -2849 111 3001 3000 3002 -2850 111 3004 3003 3005 -2851 111 3007 3006 3008 -2852 111 3010 3009 3011 -2853 111 3013 3012 3014 -2854 111 3016 3015 3017 -2855 111 3019 3018 3020 -2856 111 3022 3021 3023 -2857 111 3025 3024 3026 -2858 111 3028 3027 3029 -2859 111 3031 3030 3032 -2860 111 3034 3033 3035 -2861 111 3037 3036 3038 -2862 111 3040 3039 3041 -2863 111 3043 3042 3044 -2864 111 3046 3045 3047 -2865 111 3049 3048 3050 -2866 111 3052 3051 3053 -2867 111 3055 3054 3056 -2868 111 3058 3057 3059 -2869 111 3061 3060 3062 -2870 111 3064 3063 3065 -2871 111 3067 3066 3068 -2872 111 3070 3069 3071 -2873 111 3073 3072 3074 -2874 111 3076 3075 3077 -2875 111 3079 3078 3080 -2876 111 3082 3081 3083 -2877 111 3085 3084 3086 -2878 111 3088 3087 3089 -2879 111 3091 3090 3092 -2880 111 3094 3093 3095 -2881 111 3097 3096 3098 -2882 111 3100 3099 3101 -2883 111 3103 3102 3104 -2884 111 3106 3105 3107 -2885 111 3109 3108 3110 -2886 111 3112 3111 3113 -2887 111 3115 3114 3116 -2888 111 3118 3117 3119 -2889 111 3121 3120 3122 -2890 111 3124 3123 3125 -2891 111 3127 3126 3128 -2892 111 3130 3129 3131 -2893 111 3133 3132 3134 -2894 111 3136 3135 3137 -2895 111 3139 3138 3140 -2896 111 3142 3141 3143 -2897 111 3145 3144 3146 -2898 111 3148 3147 3149 -2899 111 3151 3150 3152 -2900 111 3154 3153 3155 -2901 111 3157 3156 3158 -2902 111 3160 3159 3161 -2903 111 3163 3162 3164 -2904 111 3166 3165 3167 -2905 111 3169 3168 3170 -2906 111 3172 3171 3173 -2907 111 3175 3174 3176 -2908 111 3178 3177 3179 -2909 111 3181 3180 3182 -2910 111 3184 3183 3185 -2911 111 3187 3186 3188 -2912 111 3190 3189 3191 -2913 111 3193 3192 3194 -2914 111 3196 3195 3197 -2915 111 3199 3198 3200 -2916 111 3202 3201 3203 -2917 111 3205 3204 3206 -2918 111 3208 3207 3209 -2919 111 3211 3210 3212 -2920 111 3214 3213 3215 -2921 111 3217 3216 3218 -2922 111 3220 3219 3221 -2923 111 3223 3222 3224 -2924 111 3226 3225 3227 -2925 111 3229 3228 3230 -2926 111 3232 3231 3233 -2927 111 3235 3234 3236 -2928 111 3238 3237 3239 -2929 111 3241 3240 3242 -2930 111 3244 3243 3245 -2931 111 3247 3246 3248 -2932 111 3250 3249 3251 -2933 111 3253 3252 3254 -2934 111 3256 3255 3257 -2935 111 3259 3258 3260 -2936 111 3262 3261 3263 -2937 111 3265 3264 3266 -2938 111 3268 3267 3269 -2939 111 3271 3270 3272 -2940 111 3274 3273 3275 -2941 111 3277 3276 3278 -2942 111 3280 3279 3281 -2943 111 3283 3282 3284 -2944 111 3286 3285 3287 -2945 111 3289 3288 3290 -2946 111 3292 3291 3293 -2947 111 3295 3294 3296 -2948 111 3298 3297 3299 -2949 111 3301 3300 3302 -2950 111 3304 3303 3305 -2951 111 3307 3306 3308 -2952 111 3310 3309 3311 -2953 111 3313 3312 3314 -2954 111 3316 3315 3317 -2955 111 3319 3318 3320 -2956 111 3322 3321 3323 -2957 111 3325 3324 3326 -2958 111 3328 3327 3329 -2959 111 3331 3330 3332 -2960 111 3334 3333 3335 -2961 111 3337 3336 3338 -2962 111 3340 3339 3341 -2963 111 3343 3342 3344 -2964 111 3346 3345 3347 -2965 111 3349 3348 3350 -2966 111 3352 3351 3353 -2967 111 3355 3354 3356 -2968 111 3358 3357 3359 -2969 111 3361 3360 3362 -2970 111 3364 3363 3365 -2971 111 3367 3366 3368 -2972 111 3370 3369 3371 -2973 111 3373 3372 3374 -2974 111 3376 3375 3377 -2975 111 3379 3378 3380 -2976 111 3382 3381 3383 -2977 111 3385 3384 3386 -2978 111 3388 3387 3389 -2979 111 3391 3390 3392 -2980 111 3394 3393 3395 -2981 111 3397 3396 3398 -2982 111 3400 3399 3401 -2983 111 3403 3402 3404 -2984 111 3406 3405 3407 -2985 111 3409 3408 3410 -2986 111 3412 3411 3413 -2987 111 3415 3414 3416 -2988 111 3418 3417 3419 -2989 111 3421 3420 3422 -2990 111 3424 3423 3425 -2991 111 3427 3426 3428 -2992 111 3430 3429 3431 -2993 111 3433 3432 3434 -2994 111 3436 3435 3437 -2995 111 3439 3438 3440 -2996 111 3442 3441 3443 -2997 111 3445 3444 3446 -2998 111 3448 3447 3449 -2999 111 3451 3450 3452 -3000 111 3454 3453 3455 -3001 111 3457 3456 3458 -3002 111 3460 3459 3461 -3003 111 3463 3462 3464 -3004 111 3466 3465 3467 -3005 111 3469 3468 3470 -3006 111 3472 3471 3473 -3007 111 3475 3474 3476 -3008 111 3478 3477 3479 -3009 111 3481 3480 3482 -3010 111 3484 3483 3485 -3011 111 3487 3486 3488 -3012 111 3490 3489 3491 -3013 111 3493 3492 3494 -3014 111 3496 3495 3497 -3015 111 3499 3498 3500 -3016 111 3502 3501 3503 -3017 111 3505 3504 3506 -3018 111 3508 3507 3509 -3019 111 3511 3510 3512 -3020 111 3514 3513 3515 -3021 111 3517 3516 3518 -3022 111 3520 3519 3521 -3023 111 3523 3522 3524 -3024 111 3526 3525 3527 -3025 111 3529 3528 3530 -3026 111 3532 3531 3533 -3027 111 3535 3534 3536 -3028 111 3538 3537 3539 -3029 111 3541 3540 3542 -3030 111 3544 3543 3545 -3031 111 3547 3546 3548 -3032 111 3550 3549 3551 -3033 111 3553 3552 3554 -3034 111 3556 3555 3557 -3035 111 3559 3558 3560 -3036 111 3562 3561 3563 -3037 111 3565 3564 3566 -3038 111 3568 3567 3569 -3039 111 3571 3570 3572 -3040 111 3574 3573 3575 -3041 111 3577 3576 3578 -3042 111 3580 3579 3581 -3043 111 3583 3582 3584 -3044 111 3586 3585 3587 -3045 111 3589 3588 3590 -3046 111 3592 3591 3593 -3047 111 3595 3594 3596 -3048 111 3598 3597 3599 -3049 111 3601 3600 3602 -3050 111 3604 3603 3605 -3051 111 3607 3606 3608 -3052 111 3610 3609 3611 -3053 111 3613 3612 3614 -3054 111 3616 3615 3617 -3055 111 3619 3618 3620 -3056 111 3622 3621 3623 -3057 111 3625 3624 3626 -3058 111 3628 3627 3629 -3059 111 3631 3630 3632 -3060 111 3634 3633 3635 -3061 111 3637 3636 3638 -3062 111 3640 3639 3641 -3063 111 3643 3642 3644 -3064 111 3646 3645 3647 -3065 111 3649 3648 3650 -3066 111 3652 3651 3653 -3067 111 3655 3654 3656 -3068 111 3658 3657 3659 -3069 111 3661 3660 3662 -3070 111 3664 3663 3665 -3071 111 3667 3666 3668 -3072 111 3670 3669 3671 -3073 111 3673 3672 3674 -3074 111 3676 3675 3677 -3075 111 3679 3678 3680 -3076 111 3682 3681 3683 -3077 111 3685 3684 3686 -3078 111 3688 3687 3689 -3079 111 3691 3690 3692 -3080 111 3694 3693 3695 -3081 111 3697 3696 3698 -3082 111 3700 3699 3701 -3083 111 3703 3702 3704 -3084 111 3706 3705 3707 -3085 111 3709 3708 3710 -3086 111 3712 3711 3713 -3087 111 3715 3714 3716 -3088 111 3718 3717 3719 -3089 111 3721 3720 3722 -3090 111 3724 3723 3725 -3091 111 3727 3726 3728 -3092 111 3730 3729 3731 -3093 111 3733 3732 3734 -3094 111 3736 3735 3737 -3095 111 3739 3738 3740 -3096 111 3742 3741 3743 -3097 111 3745 3744 3746 -3098 111 3748 3747 3749 -3099 111 3751 3750 3752 -3100 111 3754 3753 3755 -3101 111 3757 3756 3758 -3102 111 3760 3759 3761 -3103 111 3763 3762 3764 -3104 111 3766 3765 3767 -3105 111 3769 3768 3770 -3106 111 3772 3771 3773 -3107 111 3775 3774 3776 -3108 111 3778 3777 3779 -3109 111 3781 3780 3782 -3110 111 3784 3783 3785 -3111 111 3787 3786 3788 -3112 111 3790 3789 3791 -3113 111 3793 3792 3794 -3114 111 3796 3795 3797 -3115 111 3799 3798 3800 -3116 111 3802 3801 3803 -3117 111 3805 3804 3806 -3118 111 3808 3807 3809 -3119 111 3811 3810 3812 -3120 111 3814 3813 3815 -3121 111 3817 3816 3818 -3122 111 3820 3819 3821 -3123 111 3823 3822 3824 -3124 111 3826 3825 3827 -3125 111 3829 3828 3830 -3126 111 3832 3831 3833 -3127 111 3835 3834 3836 -3128 111 3838 3837 3839 -3129 111 3841 3840 3842 -3130 111 3844 3843 3845 -3131 111 3847 3846 3848 -3132 111 3850 3849 3851 -3133 111 3853 3852 3854 -3134 111 3856 3855 3857 -3135 111 3859 3858 3860 -3136 111 3862 3861 3863 -3137 111 3865 3864 3866 -3138 111 3868 3867 3869 -3139 111 3871 3870 3872 -3140 111 3874 3873 3875 -3141 111 3877 3876 3878 -3142 111 3880 3879 3881 -3143 111 3883 3882 3884 -3144 111 3886 3885 3887 -3145 111 3889 3888 3890 -3146 111 3892 3891 3893 -3147 111 3895 3894 3896 -3148 111 3898 3897 3899 -3149 111 3901 3900 3902 -3150 111 3904 3903 3905 -3151 111 3907 3906 3908 -3152 111 3910 3909 3911 -3153 111 3913 3912 3914 -3154 111 3916 3915 3917 -3155 111 3919 3918 3920 -3156 111 3922 3921 3923 -3157 111 3925 3924 3926 -3158 111 3928 3927 3929 -3159 111 3931 3930 3932 -3160 111 3934 3933 3935 -3161 111 3937 3936 3938 -3162 111 3940 3939 3941 -3163 111 3943 3942 3944 -3164 111 3946 3945 3947 -3165 111 3949 3948 3950 -3166 111 3952 3951 3953 -3167 111 3955 3954 3956 -3168 111 3958 3957 3959 -3169 111 3961 3960 3962 -3170 111 3964 3963 3965 -3171 111 3967 3966 3968 -3172 111 3970 3969 3971 -3173 111 3973 3972 3974 -3174 111 3976 3975 3977 -3175 111 3979 3978 3980 -3176 111 3982 3981 3983 -3177 111 3985 3984 3986 -3178 111 3988 3987 3989 -3179 111 3991 3990 3992 -3180 111 3994 3993 3995 -3181 111 3997 3996 3998 -3182 111 4000 3999 4001 -3183 111 4003 4002 4004 -3184 111 4006 4005 4007 -3185 111 4009 4008 4010 -3186 111 4012 4011 4013 -3187 111 4015 4014 4016 -3188 111 4018 4017 4019 -3189 111 4021 4020 4022 -3190 111 4024 4023 4025 -3191 111 4027 4026 4028 -3192 111 4030 4029 4031 -3193 111 4033 4032 4034 -3194 111 4036 4035 4037 -3195 111 4039 4038 4040 -3196 111 4042 4041 4043 -3197 111 4045 4044 4046 -3198 111 4048 4047 4049 -3199 111 4051 4050 4052 -3200 111 4054 4053 4055 -3201 111 4057 4056 4058 -3202 111 4060 4059 4061 -3203 111 4063 4062 4064 -3204 111 4066 4065 4067 -3205 111 4069 4068 4070 -3206 111 4072 4071 4073 -3207 111 4075 4074 4076 -3208 111 4078 4077 4079 -3209 111 4081 4080 4082 -3210 111 4084 4083 4085 -3211 111 4087 4086 4088 -3212 111 4090 4089 4091 -3213 111 4093 4092 4094 -3214 111 4096 4095 4097 -3215 111 4099 4098 4100 -3216 111 4102 4101 4103 -3217 111 4105 4104 4106 -3218 111 4108 4107 4109 -3219 111 4111 4110 4112 -3220 111 4114 4113 4115 -3221 111 4117 4116 4118 -3222 111 4120 4119 4121 -3223 111 4123 4122 4124 -3224 111 4126 4125 4127 -3225 111 4129 4128 4130 -3226 111 4132 4131 4133 -3227 111 4135 4134 4136 -3228 111 4138 4137 4139 -3229 111 4141 4140 4142 -3230 111 4144 4143 4145 -3231 111 4147 4146 4148 -3232 111 4150 4149 4151 -3233 111 4153 4152 4154 -3234 111 4156 4155 4157 -3235 111 4159 4158 4160 -3236 111 4162 4161 4163 -3237 111 4165 4164 4166 -3238 111 4168 4167 4169 -3239 111 4171 4170 4172 -3240 111 4174 4173 4175 -3241 111 4177 4176 4178 -3242 111 4180 4179 4181 -3243 111 4183 4182 4184 -3244 111 4186 4185 4187 -3245 111 4189 4188 4190 -3246 111 4192 4191 4193 -3247 111 4195 4194 4196 -3248 111 4198 4197 4199 -3249 111 4201 4200 4202 -3250 111 4204 4203 4205 -3251 111 4207 4206 4208 -3252 111 4210 4209 4211 -3253 111 4213 4212 4214 -3254 111 4216 4215 4217 -3255 111 4219 4218 4220 -3256 111 4222 4221 4223 -3257 111 4225 4224 4226 -3258 111 4228 4227 4229 -3259 111 4231 4230 4232 -3260 111 4234 4233 4235 -3261 111 4237 4236 4238 -3262 111 4240 4239 4241 -3263 111 4243 4242 4244 -3264 111 4246 4245 4247 -3265 111 4249 4248 4250 -3266 111 4252 4251 4253 -3267 111 4255 4254 4256 -3268 111 4258 4257 4259 -3269 111 4261 4260 4262 -3270 111 4264 4263 4265 -3271 111 4267 4266 4268 -3272 111 4270 4269 4271 -3273 111 4273 4272 4274 -3274 111 4276 4275 4277 -3275 111 4279 4278 4280 -3276 111 4282 4281 4283 -3277 111 4285 4284 4286 -3278 111 4288 4287 4289 -3279 111 4291 4290 4292 -3280 111 4294 4293 4295 -3281 111 4297 4296 4298 -3282 111 4300 4299 4301 -3283 111 4303 4302 4304 -3284 111 4306 4305 4307 -3285 111 4309 4308 4310 -3286 111 4312 4311 4313 -3287 111 4315 4314 4316 -3288 111 4318 4317 4319 -3289 111 4321 4320 4322 -3290 111 4324 4323 4325 -3291 111 4327 4326 4328 -3292 111 4330 4329 4331 -3293 111 4333 4332 4334 -3294 111 4336 4335 4337 -3295 111 4339 4338 4340 -3296 111 4342 4341 4343 -3297 111 4345 4344 4346 -3298 111 4348 4347 4349 -3299 111 4351 4350 4352 -3300 111 4354 4353 4355 -3301 111 4357 4356 4358 -3302 111 4360 4359 4361 -3303 111 4363 4362 4364 -3304 111 4366 4365 4367 -3305 111 4369 4368 4370 -3306 111 4372 4371 4373 -3307 111 4375 4374 4376 -3308 111 4378 4377 4379 -3309 111 4381 4380 4382 -3310 111 4384 4383 4385 -3311 111 4387 4386 4388 -3312 111 4390 4389 4391 -3313 111 4393 4392 4394 -3314 111 4396 4395 4397 -3315 111 4399 4398 4400 -3316 111 4402 4401 4403 -3317 111 4405 4404 4406 -3318 111 4408 4407 4409 -3319 111 4411 4410 4412 -3320 111 4414 4413 4415 -3321 111 4417 4416 4418 -3322 111 4420 4419 4421 -3323 111 4423 4422 4424 -3324 111 4426 4425 4427 -3325 111 4429 4428 4430 -3326 111 4432 4431 4433 -3327 111 4435 4434 4436 -3328 111 4438 4437 4439 -3329 111 4441 4440 4442 -3330 111 4444 4443 4445 -3331 111 4447 4446 4448 -3332 111 4450 4449 4451 -3333 111 4453 4452 4454 -3334 111 4456 4455 4457 -3335 111 4459 4458 4460 -3336 111 4462 4461 4463 -3337 111 4465 4464 4466 -3338 111 4468 4467 4469 -3339 111 4471 4470 4472 -3340 111 4474 4473 4475 -3341 111 4477 4476 4478 -3342 111 4480 4479 4481 -3343 111 4483 4482 4484 -3344 111 4486 4485 4487 -3345 111 4489 4488 4490 -3346 111 4492 4491 4493 -3347 111 4495 4494 4496 -3348 111 4498 4497 4499 -3349 111 4501 4500 4502 -3350 111 4504 4503 4505 -3351 111 4507 4506 4508 -3352 111 4510 4509 4511 -3353 111 4513 4512 4514 -3354 111 4516 4515 4517 -3355 111 4519 4518 4520 -3356 111 4522 4521 4523 -3357 111 4525 4524 4526 -3358 111 4528 4527 4529 -3359 111 4531 4530 4532 -3360 111 4534 4533 4535 -3361 111 4537 4536 4538 -3362 111 4540 4539 4541 -3363 111 4543 4542 4544 -3364 111 4546 4545 4547 -3365 111 4549 4548 4550 -3366 111 4552 4551 4553 -3367 111 4555 4554 4556 -3368 111 4558 4557 4559 -3369 111 4561 4560 4562 -3370 111 4564 4563 4565 -3371 111 4567 4566 4568 -3372 111 4570 4569 4571 -3373 111 4573 4572 4574 -3374 111 4576 4575 4577 -3375 111 4579 4578 4580 -3376 111 4582 4581 4583 -3377 111 4585 4584 4586 -3378 111 4588 4587 4589 -3379 111 4591 4590 4592 -3380 111 4594 4593 4595 -3381 111 4597 4596 4598 -3382 111 4600 4599 4601 -3383 111 4603 4602 4604 -3384 111 4606 4605 4607 -3385 111 4609 4608 4610 -3386 111 4612 4611 4613 -3387 111 4615 4614 4616 -3388 111 4618 4617 4619 -3389 111 4621 4620 4622 -3390 111 4624 4623 4625 -3391 111 4627 4626 4628 -3392 111 4630 4629 4631 -3393 111 4633 4632 4634 -3394 111 4636 4635 4637 -3395 111 4639 4638 4640 -3396 111 4642 4641 4643 -3397 111 4645 4644 4646 -3398 111 4648 4647 4649 -3399 111 4651 4650 4652 -3400 111 4654 4653 4655 -3401 111 4657 4656 4658 -3402 111 4660 4659 4661 -3403 111 4663 4662 4664 -3404 111 4666 4665 4667 -3405 111 4669 4668 4670 -3406 111 4672 4671 4673 -3407 111 4675 4674 4676 -3408 111 4678 4677 4679 -3409 111 4681 4680 4682 -3410 111 4684 4683 4685 -3411 111 4687 4686 4688 -3412 111 4690 4689 4691 -3413 111 4693 4692 4694 -3414 111 4696 4695 4697 -3415 111 4699 4698 4700 -3416 111 4702 4701 4703 -3417 111 4705 4704 4706 -3418 111 4708 4707 4709 -3419 111 4711 4710 4712 -3420 111 4714 4713 4715 -3421 111 4717 4716 4718 -3422 111 4720 4719 4721 -3423 111 4723 4722 4724 -3424 111 4726 4725 4727 -3425 111 4729 4728 4730 -3426 111 4732 4731 4733 -3427 111 4735 4734 4736 -3428 111 4738 4737 4739 -3429 111 4741 4740 4742 -3430 111 4744 4743 4745 -3431 111 4747 4746 4748 -3432 111 4750 4749 4751 -3433 111 4753 4752 4754 -3434 111 4756 4755 4757 -3435 111 4759 4758 4760 -3436 111 4762 4761 4763 -3437 111 4765 4764 4766 -3438 111 4768 4767 4769 -3439 111 4771 4770 4772 -3440 111 4774 4773 4775 -3441 111 4777 4776 4778 -3442 111 4780 4779 4781 -3443 111 4783 4782 4784 -3444 111 4786 4785 4787 -3445 111 4789 4788 4790 -3446 111 4792 4791 4793 -3447 111 4795 4794 4796 -3448 111 4798 4797 4799 -3449 111 4801 4800 4802 -3450 111 4804 4803 4805 -3451 111 4807 4806 4808 -3452 111 4810 4809 4811 -3453 111 4813 4812 4814 -3454 111 4816 4815 4817 -3455 111 4819 4818 4820 -3456 111 4822 4821 4823 -3457 111 4825 4824 4826 -3458 111 4828 4827 4829 -3459 111 4831 4830 4832 -3460 111 4834 4833 4835 -3461 111 4837 4836 4838 -3462 111 4840 4839 4841 -3463 111 4843 4842 4844 -3464 111 4846 4845 4847 -3465 111 4849 4848 4850 -3466 111 4852 4851 4853 -3467 111 4855 4854 4856 -3468 111 4858 4857 4859 -3469 111 4861 4860 4862 -3470 111 4864 4863 4865 -3471 111 4867 4866 4868 -3472 111 4870 4869 4871 -3473 111 4873 4872 4874 -3474 111 4876 4875 4877 -3475 111 4879 4878 4880 -3476 111 4882 4881 4883 -3477 111 4885 4884 4886 -3478 111 4888 4887 4889 -3479 111 4891 4890 4892 -3480 111 4894 4893 4895 -3481 111 4897 4896 4898 -3482 111 4900 4899 4901 -3483 111 4903 4902 4904 -3484 111 4906 4905 4907 -3485 111 4909 4908 4910 -3486 111 4912 4911 4913 -3487 111 4915 4914 4916 -3488 111 4918 4917 4919 -3489 111 4921 4920 4922 -3490 111 4924 4923 4925 -3491 111 4927 4926 4928 -3492 111 4930 4929 4931 -3493 111 4933 4932 4934 -3494 111 4936 4935 4937 -3495 111 4939 4938 4940 -3496 111 4942 4941 4943 -3497 111 4945 4944 4946 -3498 111 4948 4947 4949 -3499 111 4951 4950 4952 -3500 111 4954 4953 4955 -3501 111 4957 4956 4958 -3502 111 4960 4959 4961 -3503 111 4963 4962 4964 -3504 111 4966 4965 4967 -3505 111 4969 4968 4970 -3506 111 4972 4971 4973 -3507 111 4975 4974 4976 -3508 111 4978 4977 4979 -3509 111 4981 4980 4982 -3510 111 4984 4983 4985 -3511 111 4987 4986 4988 -3512 111 4990 4989 4991 -3513 111 4993 4992 4994 -3514 111 4996 4995 4997 -3515 111 4999 4998 5000 -3516 111 5002 5001 5003 -3517 111 5005 5004 5006 -3518 111 5008 5007 5009 -3519 111 5011 5010 5012 -3520 111 5014 5013 5015 -3521 111 5017 5016 5018 -3522 111 5020 5019 5021 -3523 111 5023 5022 5024 -3524 111 5026 5025 5027 -3525 111 5029 5028 5030 -3526 111 5032 5031 5033 -3527 111 5035 5034 5036 -3528 111 5038 5037 5039 -3529 111 5041 5040 5042 -3530 111 5044 5043 5045 -3531 111 5047 5046 5048 -3532 111 5050 5049 5051 -3533 111 5053 5052 5054 -3534 111 5056 5055 5057 -3535 111 5059 5058 5060 -3536 111 5062 5061 5063 -3537 111 5065 5064 5066 -3538 111 5068 5067 5069 -3539 111 5071 5070 5072 -3540 111 5074 5073 5075 -3541 111 5077 5076 5078 -3542 111 5080 5079 5081 -3543 111 5083 5082 5084 -3544 111 5086 5085 5087 -3545 111 5089 5088 5090 -3546 111 5092 5091 5093 -3547 111 5095 5094 5096 -3548 111 5098 5097 5099 -3549 111 5101 5100 5102 -3550 111 5104 5103 5105 -3551 111 5107 5106 5108 -3552 111 5110 5109 5111 -3553 111 5113 5112 5114 -3554 111 5116 5115 5117 -3555 111 5119 5118 5120 -3556 111 5122 5121 5123 -3557 111 5125 5124 5126 -3558 111 5128 5127 5129 -3559 111 5131 5130 5132 -3560 111 5134 5133 5135 -3561 111 5137 5136 5138 -3562 111 5140 5139 5141 -3563 111 5143 5142 5144 -3564 111 5146 5145 5147 -3565 111 5149 5148 5150 -3566 111 5152 5151 5153 -3567 111 5155 5154 5156 -3568 111 5158 5157 5159 -3569 111 5161 5160 5162 -3570 111 5164 5163 5165 -3571 111 5167 5166 5168 -3572 111 5170 5169 5171 -3573 111 5173 5172 5174 -3574 111 5176 5175 5177 -3575 111 5179 5178 5180 -3576 111 5182 5181 5183 -3577 111 5185 5184 5186 -3578 111 5188 5187 5189 -3579 111 5191 5190 5192 -3580 111 5194 5193 5195 -3581 111 5197 5196 5198 -3582 111 5200 5199 5201 -3583 111 5203 5202 5204 -3584 111 5206 5205 5207 -3585 111 5209 5208 5210 -3586 111 5212 5211 5213 -3587 111 5215 5214 5216 -3588 111 5218 5217 5219 -3589 111 5221 5220 5222 -3590 111 5224 5223 5225 -3591 111 5227 5226 5228 -3592 111 5230 5229 5231 -3593 111 5233 5232 5234 -3594 111 5236 5235 5237 -3595 111 5239 5238 5240 -3596 111 5242 5241 5243 -3597 111 5245 5244 5246 -3598 111 5248 5247 5249 -3599 111 5251 5250 5252 -3600 111 5254 5253 5255 -3601 111 5257 5256 5258 -3602 111 5260 5259 5261 -3603 111 5263 5262 5264 -3604 111 5266 5265 5267 -3605 111 5269 5268 5270 -3606 111 5272 5271 5273 -3607 111 5275 5274 5276 -3608 111 5278 5277 5279 -3609 111 5281 5280 5282 -3610 111 5284 5283 5285 -3611 111 5287 5286 5288 -3612 111 5290 5289 5291 -3613 111 5293 5292 5294 -3614 111 5296 5295 5297 -3615 111 5299 5298 5300 -3616 111 5302 5301 5303 -3617 111 5305 5304 5306 -3618 111 5308 5307 5309 -3619 111 5311 5310 5312 -3620 111 5314 5313 5315 -3621 111 5317 5316 5318 -3622 111 5320 5319 5321 -3623 111 5323 5322 5324 -3624 111 5326 5325 5327 -3625 111 5329 5328 5330 -3626 111 5332 5331 5333 -3627 111 5335 5334 5336 -3628 111 5338 5337 5339 -3629 111 5341 5340 5342 -3630 111 5344 5343 5345 -3631 111 5347 5346 5348 -3632 111 5350 5349 5351 -3633 111 5353 5352 5354 -3634 111 5356 5355 5357 -3635 111 5359 5358 5360 -3636 111 5362 5361 5363 -3637 111 5365 5364 5366 -3638 111 5368 5367 5369 -3639 111 5371 5370 5372 -3640 111 5374 5373 5375 -3641 111 5377 5376 5378 -3642 111 5380 5379 5381 -3643 111 5383 5382 5384 -3644 111 5386 5385 5387 -3645 111 5389 5388 5390 -3646 111 5392 5391 5393 -3647 111 5395 5394 5396 -3648 111 5398 5397 5399 -3649 111 5401 5400 5402 -3650 111 5404 5403 5405 -3651 111 5407 5406 5408 -3652 111 5410 5409 5411 -3653 111 5413 5412 5414 -3654 111 5416 5415 5417 -3655 111 5419 5418 5420 -3656 111 5422 5421 5423 -3657 111 5425 5424 5426 -3658 111 5428 5427 5429 -3659 111 5431 5430 5432 -3660 111 5434 5433 5435 -3661 111 5437 5436 5438 -3662 111 5440 5439 5441 -3663 111 5443 5442 5444 -3664 111 5446 5445 5447 -3665 111 5449 5448 5450 -3666 111 5452 5451 5453 -3667 111 5455 5454 5456 -3668 111 5458 5457 5459 -3669 111 5461 5460 5462 -3670 111 5464 5463 5465 -3671 111 5467 5466 5468 -3672 111 5470 5469 5471 -3673 111 5473 5472 5474 -3674 111 5476 5475 5477 -3675 111 5479 5478 5480 -3676 111 5482 5481 5483 -3677 111 5485 5484 5486 -3678 111 5488 5487 5489 -3679 111 5491 5490 5492 -3680 111 5494 5493 5495 -3681 111 5497 5496 5498 -3682 111 5500 5499 5501 -3683 111 5503 5502 5504 -3684 111 5506 5505 5507 -3685 111 5509 5508 5510 -3686 111 5512 5511 5513 -3687 111 5515 5514 5516 -3688 111 5518 5517 5519 -3689 111 5521 5520 5522 -3690 111 5524 5523 5525 -3691 111 5527 5526 5528 -3692 111 5530 5529 5531 -3693 111 5533 5532 5534 -3694 111 5536 5535 5537 -3695 111 5539 5538 5540 -3696 111 5542 5541 5543 -3697 111 5545 5544 5546 -3698 111 5548 5547 5549 -3699 111 5551 5550 5552 -3700 111 5554 5553 5555 -3701 111 5557 5556 5558 -3702 111 5560 5559 5561 -3703 111 5563 5562 5564 -3704 111 5566 5565 5567 -3705 111 5569 5568 5570 -3706 111 5572 5571 5573 -3707 111 5575 5574 5576 -3708 111 5578 5577 5579 -3709 111 5581 5580 5582 -3710 111 5584 5583 5585 -3711 111 5587 5586 5588 -3712 111 5590 5589 5591 -3713 111 5593 5592 5594 -3714 111 5596 5595 5597 -3715 111 5599 5598 5600 -3716 111 5602 5601 5603 -3717 111 5605 5604 5606 -3718 111 5608 5607 5609 -3719 111 5611 5610 5612 -3720 111 5614 5613 5615 -3721 111 5617 5616 5618 -3722 111 5620 5619 5621 -3723 111 5623 5622 5624 -3724 111 5626 5625 5627 -3725 111 5629 5628 5630 -3726 111 5632 5631 5633 -3727 111 5635 5634 5636 -3728 111 5638 5637 5639 -3729 111 5641 5640 5642 -3730 111 5644 5643 5645 -3731 111 5647 5646 5648 -3732 111 5650 5649 5651 -3733 111 5653 5652 5654 -3734 111 5656 5655 5657 -3735 111 5659 5658 5660 -3736 111 5662 5661 5663 -3737 111 5665 5664 5666 -3738 111 5668 5667 5669 -3739 111 5671 5670 5672 -3740 111 5674 5673 5675 -3741 111 5677 5676 5678 -3742 111 5680 5679 5681 -3743 111 5683 5682 5684 -3744 111 5686 5685 5687 -3745 111 5689 5688 5690 -3746 111 5692 5691 5693 -3747 111 5695 5694 5696 -3748 111 5698 5697 5699 -3749 111 5701 5700 5702 -3750 111 5704 5703 5705 -3751 111 5707 5706 5708 -3752 111 5710 5709 5711 -3753 111 5713 5712 5714 -3754 111 5716 5715 5717 -3755 111 5719 5718 5720 -3756 111 5722 5721 5723 -3757 111 5725 5724 5726 -3758 111 5728 5727 5729 -3759 111 5731 5730 5732 -3760 111 5734 5733 5735 -3761 111 5737 5736 5738 -3762 111 5740 5739 5741 -3763 111 5743 5742 5744 -3764 111 5746 5745 5747 -3765 111 5749 5748 5750 -3766 111 5752 5751 5753 -3767 111 5755 5754 5756 -3768 111 5758 5757 5759 -3769 111 5761 5760 5762 -3770 111 5764 5763 5765 -3771 111 5767 5766 5768 -3772 111 5770 5769 5771 -3773 111 5773 5772 5774 -3774 111 5776 5775 5777 -3775 111 5779 5778 5780 -3776 111 5782 5781 5783 -3777 111 5785 5784 5786 -3778 111 5788 5787 5789 -3779 111 5791 5790 5792 -3780 111 5794 5793 5795 -3781 111 5797 5796 5798 -3782 111 5800 5799 5801 -3783 111 5803 5802 5804 -3784 111 5806 5805 5807 -3785 111 5809 5808 5810 -3786 111 5812 5811 5813 -3787 111 5815 5814 5816 -3788 111 5818 5817 5819 -3789 111 5821 5820 5822 -3790 111 5824 5823 5825 -3791 111 5827 5826 5828 -3792 111 5830 5829 5831 -3793 111 5833 5832 5834 -3794 111 5836 5835 5837 -3795 111 5839 5838 5840 -3796 111 5842 5841 5843 -3797 111 5845 5844 5846 -3798 111 5848 5847 5849 -3799 111 5851 5850 5852 -3800 111 5854 5853 5855 -3801 111 5857 5856 5858 -3802 111 5860 5859 5861 -3803 111 5863 5862 5864 -3804 111 5866 5865 5867 -3805 111 5869 5868 5870 -3806 111 5872 5871 5873 -3807 111 5875 5874 5876 -3808 111 5878 5877 5879 -3809 111 5881 5880 5882 -3810 111 5884 5883 5885 -3811 111 5887 5886 5888 -3812 111 5890 5889 5891 -3813 111 5893 5892 5894 -3814 111 5896 5895 5897 -3815 111 5899 5898 5900 -3816 111 5902 5901 5903 -3817 111 5905 5904 5906 -3818 111 5908 5907 5909 -3819 111 5911 5910 5912 -3820 111 5914 5913 5915 -3821 111 5917 5916 5918 -3822 111 5920 5919 5921 -3823 111 5923 5922 5924 -3824 111 5926 5925 5927 -3825 111 5929 5928 5930 -3826 111 5932 5931 5933 -3827 111 5935 5934 5936 -3828 111 5938 5937 5939 -3829 111 5941 5940 5942 -3830 111 5944 5943 5945 -3831 111 5947 5946 5948 -3832 111 5950 5949 5951 -3833 111 5953 5952 5954 -3834 111 5956 5955 5957 -3835 111 5959 5958 5960 -3836 111 5962 5961 5963 -3837 111 5965 5964 5966 -3838 111 5968 5967 5969 -3839 111 5971 5970 5972 -3840 111 5974 5973 5975 -3841 111 5977 5976 5978 -3842 111 5980 5979 5981 -3843 111 5983 5982 5984 -3844 111 5986 5985 5987 -3845 111 5989 5988 5990 -3846 111 5992 5991 5993 -3847 111 5995 5994 5996 -3848 111 5998 5997 5999 -3849 111 6001 6000 6002 -3850 111 6004 6003 6005 -3851 111 6007 6006 6008 -3852 111 6010 6009 6011 -3853 111 6013 6012 6014 -3854 111 6016 6015 6017 -3855 111 6019 6018 6020 -3856 111 6022 6021 6023 -3857 111 6025 6024 6026 -3858 111 6028 6027 6029 -3859 111 6031 6030 6032 -3860 111 6034 6033 6035 -3861 111 6037 6036 6038 -3862 111 6040 6039 6041 -3863 111 6043 6042 6044 -3864 111 6046 6045 6047 -3865 111 6049 6048 6050 -3866 111 6052 6051 6053 -3867 111 6055 6054 6056 -3868 111 6058 6057 6059 -3869 111 6061 6060 6062 -3870 111 6064 6063 6065 -3871 111 6067 6066 6068 -3872 111 6070 6069 6071 -3873 111 6073 6072 6074 -3874 111 6076 6075 6077 -3875 111 6079 6078 6080 -3876 111 6082 6081 6083 -3877 111 6085 6084 6086 -3878 111 6088 6087 6089 -3879 111 6091 6090 6092 -3880 111 6094 6093 6095 -3881 111 6097 6096 6098 -3882 111 6100 6099 6101 -3883 111 6103 6102 6104 -3884 111 6106 6105 6107 -3885 111 6109 6108 6110 -3886 111 6112 6111 6113 -3887 111 6115 6114 6116 -3888 111 6118 6117 6119 -3889 111 6121 6120 6122 -3890 111 6124 6123 6125 -3891 111 6127 6126 6128 -3892 111 6130 6129 6131 -3893 111 6133 6132 6134 -3894 111 6136 6135 6137 -3895 111 6139 6138 6140 -3896 111 6142 6141 6143 -3897 111 6145 6144 6146 -3898 111 6148 6147 6149 -3899 111 6151 6150 6152 -3900 111 6154 6153 6155 -3901 111 6157 6156 6158 -3902 111 6160 6159 6161 -3903 111 6163 6162 6164 -3904 111 6166 6165 6167 -3905 111 6169 6168 6170 -3906 111 6172 6171 6173 -3907 111 6175 6174 6176 -3908 111 6178 6177 6179 -3909 111 6181 6180 6182 -3910 111 6184 6183 6185 -3911 111 6187 6186 6188 -3912 111 6190 6189 6191 -3913 111 6193 6192 6194 -3914 111 6196 6195 6197 -3915 111 6199 6198 6200 -3916 111 6202 6201 6203 -3917 111 6205 6204 6206 -3918 111 6208 6207 6209 -3919 111 6211 6210 6212 -3920 111 6214 6213 6215 -3921 111 6217 6216 6218 -3922 111 6220 6219 6221 -3923 111 6223 6222 6224 -3924 111 6226 6225 6227 -3925 111 6229 6228 6230 -3926 111 6232 6231 6233 -3927 111 6235 6234 6236 -3928 111 6238 6237 6239 -3929 111 6241 6240 6242 -3930 111 6244 6243 6245 -3931 111 6247 6246 6248 -3932 111 6250 6249 6251 -3933 111 6253 6252 6254 -3934 111 6256 6255 6257 -3935 111 6259 6258 6260 -3936 111 6262 6261 6263 -3937 111 6265 6264 6266 -3938 111 6268 6267 6269 -3939 111 6271 6270 6272 -3940 111 6274 6273 6275 -3941 111 6277 6276 6278 -3942 111 6280 6279 6281 -3943 111 6283 6282 6284 -3944 111 6286 6285 6287 -3945 111 6289 6288 6290 -3946 111 6292 6291 6293 -3947 111 6295 6294 6296 -3948 111 6298 6297 6299 -3949 111 6301 6300 6302 -3950 111 6304 6303 6305 -3951 111 6307 6306 6308 -3952 111 6310 6309 6311 -3953 111 6313 6312 6314 -3954 111 6316 6315 6317 -3955 111 6319 6318 6320 -3956 111 6322 6321 6323 -3957 111 6325 6324 6326 -3958 111 6328 6327 6329 -3959 111 6331 6330 6332 -3960 111 6334 6333 6335 -3961 111 6337 6336 6338 -3962 111 6340 6339 6341 -3963 111 6343 6342 6344 -3964 111 6346 6345 6347 -3965 111 6349 6348 6350 -3966 111 6352 6351 6353 -3967 111 6355 6354 6356 -3968 111 6358 6357 6359 -3969 111 6361 6360 6362 -3970 111 6364 6363 6365 -3971 111 6367 6366 6368 -3972 111 6370 6369 6371 -3973 111 6373 6372 6374 -3974 111 6376 6375 6377 -3975 111 6379 6378 6380 -3976 111 6382 6381 6383 -3977 111 6385 6384 6386 -3978 111 6388 6387 6389 -3979 111 6391 6390 6392 -3980 111 6394 6393 6395 -3981 111 6397 6396 6398 -3982 111 6400 6399 6401 -3983 111 6403 6402 6404 -3984 111 6406 6405 6407 -3985 111 6409 6408 6410 -3986 111 6412 6411 6413 -3987 111 6415 6414 6416 -3988 111 6418 6417 6419 -3989 111 6421 6420 6422 -3990 111 6424 6423 6425 -3991 111 6427 6426 6428 -3992 111 6430 6429 6431 -3993 111 6433 6432 6434 -3994 111 6436 6435 6437 -3995 111 6439 6438 6440 -3996 111 6442 6441 6443 -3997 111 6445 6444 6446 -3998 111 6448 6447 6449 -3999 111 6451 6450 6452 -4000 111 6454 6453 6455 -4001 111 6457 6456 6458 -4002 111 6460 6459 6461 -4003 111 6463 6462 6464 -4004 111 6466 6465 6467 -4005 111 6469 6468 6470 -4006 111 6472 6471 6473 -4007 111 6475 6474 6476 -4008 111 6478 6477 6479 -4009 111 6481 6480 6482 -4010 111 6484 6483 6485 -4011 111 6487 6486 6488 -4012 111 6490 6489 6491 -4013 111 6493 6492 6494 -4014 111 6496 6495 6497 -4015 111 6499 6498 6500 -4016 111 6502 6501 6503 -4017 111 6505 6504 6506 -4018 111 6508 6507 6509 -4019 111 6511 6510 6512 -4020 111 6514 6513 6515 -4021 111 6517 6516 6518 -4022 111 6520 6519 6521 -4023 111 6523 6522 6524 -4024 111 6526 6525 6527 -4025 111 6529 6528 6530 -4026 111 6532 6531 6533 -4027 111 6535 6534 6536 -4028 111 6538 6537 6539 -4029 111 6541 6540 6542 -4030 111 6544 6543 6545 -4031 111 6547 6546 6548 -4032 111 6550 6549 6551 -4033 111 6553 6552 6554 -4034 111 6556 6555 6557 -4035 111 6559 6558 6560 -4036 111 6562 6561 6563 -4037 111 6565 6564 6566 -4038 111 6568 6567 6569 -4039 111 6571 6570 6572 -4040 111 6574 6573 6575 -4041 111 6577 6576 6578 -4042 111 6580 6579 6581 -4043 111 6583 6582 6584 -4044 111 6586 6585 6587 -4045 111 6589 6588 6590 -4046 111 6592 6591 6593 -4047 111 6595 6594 6596 -4048 111 6598 6597 6599 -4049 111 6601 6600 6602 -4050 111 6604 6603 6605 -4051 111 6607 6606 6608 -4052 111 6610 6609 6611 -4053 111 6613 6612 6614 -4054 111 6616 6615 6617 -4055 111 6619 6618 6620 -4056 111 6622 6621 6623 -4057 111 6625 6624 6626 -4058 111 6628 6627 6629 -4059 111 6631 6630 6632 -4060 111 6634 6633 6635 -4061 111 6637 6636 6638 -4062 111 6640 6639 6641 -4063 111 6643 6642 6644 -4064 111 6646 6645 6647 -4065 111 6649 6648 6650 -4066 111 6652 6651 6653 -4067 111 6655 6654 6656 -4068 111 6658 6657 6659 -4069 111 6661 6660 6662 -4070 111 6664 6663 6665 -4071 111 6667 6666 6668 -4072 111 6670 6669 6671 -4073 111 6673 6672 6674 -4074 111 6676 6675 6677 -4075 111 6679 6678 6680 -4076 111 6682 6681 6683 -4077 111 6685 6684 6686 -4078 111 6688 6687 6689 -4079 111 6691 6690 6692 -4080 111 6694 6693 6695 -4081 111 6697 6696 6698 -4082 111 6700 6699 6701 -4083 111 6703 6702 6704 -4084 111 6706 6705 6707 -4085 111 6709 6708 6710 -4086 111 6712 6711 6713 -4087 111 6715 6714 6716 -4088 111 6718 6717 6719 -4089 111 6721 6720 6722 -4090 111 6724 6723 6725 -4091 111 6727 6726 6728 -4092 111 6730 6729 6731 -4093 111 6733 6732 6734 -4094 111 6736 6735 6737 -4095 111 6739 6738 6740 -4096 111 6742 6741 6743 -4097 111 6745 6744 6746 -4098 111 6748 6747 6749 -4099 111 6751 6750 6752 -4100 111 6754 6753 6755 -4101 111 6757 6756 6758 -4102 111 6760 6759 6761 -4103 111 6763 6762 6764 -4104 111 6766 6765 6767 -4105 111 6769 6768 6770 -4106 111 6772 6771 6773 -4107 111 6775 6774 6776 -4108 111 6778 6777 6779 -4109 111 6781 6780 6782 -4110 111 6784 6783 6785 -4111 111 6787 6786 6788 -4112 111 6790 6789 6791 -4113 111 6793 6792 6794 -4114 111 6796 6795 6797 -4115 111 6799 6798 6800 -4116 111 6802 6801 6803 -4117 111 6805 6804 6806 -4118 111 6808 6807 6809 -4119 111 6811 6810 6812 -4120 111 6814 6813 6815 -4121 111 6817 6816 6818 -4122 111 6820 6819 6821 -4123 111 6823 6822 6824 -4124 111 6826 6825 6827 -4125 111 6829 6828 6830 -4126 111 6832 6831 6833 -4127 111 6835 6834 6836 -4128 111 6838 6837 6839 -4129 111 6841 6840 6842 -4130 111 6844 6843 6845 -4131 111 6847 6846 6848 -4132 111 6850 6849 6851 -4133 111 6853 6852 6854 -4134 111 6856 6855 6857 -4135 111 6859 6858 6860 -4136 111 6862 6861 6863 -4137 111 6865 6864 6866 -4138 111 6868 6867 6869 -4139 111 6871 6870 6872 -4140 111 6874 6873 6875 -4141 111 6877 6876 6878 -4142 111 6880 6879 6881 -4143 111 6883 6882 6884 -4144 111 6886 6885 6887 -4145 111 6889 6888 6890 -4146 111 6892 6891 6893 -4147 111 6895 6894 6896 -4148 111 6898 6897 6899 -4149 111 6901 6900 6902 -4150 111 6904 6903 6905 -4151 111 6907 6906 6908 -4152 111 6910 6909 6911 -4153 111 6913 6912 6914 -4154 111 6916 6915 6917 -4155 111 6919 6918 6920 -4156 111 6922 6921 6923 -4157 111 6925 6924 6926 -4158 111 6928 6927 6929 -4159 111 6931 6930 6932 -4160 111 6934 6933 6935 -4161 111 6937 6936 6938 -4162 111 6940 6939 6941 -4163 111 6943 6942 6944 -4164 111 6946 6945 6947 -4165 111 6949 6948 6950 -4166 111 6952 6951 6953 -4167 111 6955 6954 6956 -4168 111 6958 6957 6959 -4169 111 6961 6960 6962 -4170 111 6964 6963 6965 -4171 111 6967 6966 6968 -4172 111 6970 6969 6971 -4173 111 6973 6972 6974 -4174 111 6976 6975 6977 -4175 111 6979 6978 6980 -4176 111 6982 6981 6983 -4177 111 6985 6984 6986 -4178 111 6988 6987 6989 -4179 111 6991 6990 6992 -4180 111 6994 6993 6995 -4181 111 6997 6996 6998 -4182 111 7000 6999 7001 -4183 111 7003 7002 7004 -4184 111 7006 7005 7007 -4185 111 7009 7008 7010 -4186 111 7012 7011 7013 -4187 111 7015 7014 7016 -4188 111 7018 7017 7019 -4189 111 7021 7020 7022 -4190 111 7024 7023 7025 -4191 111 7027 7026 7028 -4192 111 7030 7029 7031 -4193 111 7033 7032 7034 -4194 111 7036 7035 7037 -4195 111 7039 7038 7040 -4196 111 7042 7041 7043 -4197 111 7045 7044 7046 -4198 111 7048 7047 7049 -4199 111 7051 7050 7052 -4200 111 7054 7053 7055 -4201 111 7057 7056 7058 -4202 111 7060 7059 7061 -4203 111 7063 7062 7064 -4204 111 7066 7065 7067 -4205 111 7069 7068 7070 -4206 111 7072 7071 7073 -4207 111 7075 7074 7076 -4208 111 7078 7077 7079 -4209 111 7081 7080 7082 -4210 111 7084 7083 7085 -4211 111 7087 7086 7088 -4212 111 7090 7089 7091 -4213 111 7093 7092 7094 -4214 111 7096 7095 7097 -4215 111 7099 7098 7100 -4216 111 7102 7101 7103 -4217 111 7105 7104 7106 -4218 111 7108 7107 7109 -4219 111 7111 7110 7112 -4220 111 7114 7113 7115 -4221 111 7117 7116 7118 -4222 111 7120 7119 7121 -4223 111 7123 7122 7124 -4224 111 7126 7125 7127 -4225 111 7129 7128 7130 -4226 111 7132 7131 7133 -4227 111 7135 7134 7136 -4228 111 7138 7137 7139 -4229 111 7141 7140 7142 -4230 111 7144 7143 7145 -4231 111 7147 7146 7148 -4232 111 7150 7149 7151 -4233 111 7153 7152 7154 -4234 111 7156 7155 7157 -4235 111 7159 7158 7160 -4236 111 7162 7161 7163 -4237 111 7165 7164 7166 -4238 111 7168 7167 7169 -4239 111 7171 7170 7172 -4240 111 7174 7173 7175 -4241 111 7177 7176 7178 -4242 111 7180 7179 7181 -4243 111 7183 7182 7184 -4244 111 7186 7185 7187 -4245 111 7189 7188 7190 -4246 111 7192 7191 7193 -4247 111 7195 7194 7196 -4248 111 7198 7197 7199 -4249 111 7201 7200 7202 -4250 111 7204 7203 7205 -4251 111 7207 7206 7208 -4252 111 7210 7209 7211 -4253 111 7213 7212 7214 -4254 111 7216 7215 7217 -4255 111 7219 7218 7220 -4256 111 7222 7221 7223 -4257 111 7225 7224 7226 -4258 111 7228 7227 7229 -4259 111 7231 7230 7232 -4260 111 7234 7233 7235 -4261 111 7237 7236 7238 -4262 111 7240 7239 7241 -4263 111 7243 7242 7244 -4264 111 7246 7245 7247 -4265 111 7249 7248 7250 -4266 111 7252 7251 7253 -4267 111 7255 7254 7256 -4268 111 7258 7257 7259 -4269 111 7261 7260 7262 -4270 111 7264 7263 7265 -4271 111 7267 7266 7268 -4272 111 7270 7269 7271 -4273 111 7273 7272 7274 -4274 111 7276 7275 7277 -4275 111 7279 7278 7280 -4276 111 7282 7281 7283 -4277 111 7285 7284 7286 -4278 111 7288 7287 7289 -4279 111 7291 7290 7292 -4280 111 7294 7293 7295 -4281 111 7297 7296 7298 -4282 111 7300 7299 7301 -4283 111 7303 7302 7304 -4284 111 7306 7305 7307 -4285 111 7309 7308 7310 -4286 111 7312 7311 7313 -4287 111 7315 7314 7316 -4288 111 7318 7317 7319 -4289 111 7321 7320 7322 -4290 111 7324 7323 7325 -4291 111 7327 7326 7328 -4292 111 7330 7329 7331 -4293 111 7333 7332 7334 -4294 111 7336 7335 7337 -4295 111 7339 7338 7340 -4296 111 7342 7341 7343 -4297 111 7345 7344 7346 -4298 111 7348 7347 7349 -4299 111 7351 7350 7352 -4300 111 7354 7353 7355 -4301 111 7357 7356 7358 -4302 111 7360 7359 7361 -4303 111 7363 7362 7364 -4304 111 7366 7365 7367 -4305 111 7369 7368 7370 -4306 111 7372 7371 7373 -4307 111 7375 7374 7376 -4308 111 7378 7377 7379 -4309 111 7381 7380 7382 -4310 111 7384 7383 7385 -4311 111 7387 7386 7388 -4312 111 7390 7389 7391 -4313 111 7393 7392 7394 -4314 111 7396 7395 7397 -4315 111 7399 7398 7400 -4316 111 7402 7401 7403 -4317 111 7405 7404 7406 -4318 111 7408 7407 7409 -4319 111 7411 7410 7412 -4320 111 7414 7413 7415 -4321 111 7417 7416 7418 -4322 111 7420 7419 7421 -4323 111 7423 7422 7424 -4324 111 7426 7425 7427 -4325 111 7429 7428 7430 -4326 111 7432 7431 7433 -4327 111 7435 7434 7436 -4328 111 7438 7437 7439 -4329 111 7441 7440 7442 -4330 111 7444 7443 7445 -4331 111 7447 7446 7448 -4332 111 7450 7449 7451 -4333 111 7453 7452 7454 -4334 111 7456 7455 7457 -4335 111 7459 7458 7460 -4336 111 7462 7461 7463 -4337 111 7465 7464 7466 -4338 111 7468 7467 7469 -4339 111 7471 7470 7472 -4340 111 7474 7473 7475 -4341 111 7477 7476 7478 -4342 111 7480 7479 7481 -4343 111 7483 7482 7484 -4344 111 7486 7485 7487 -4345 111 7489 7488 7490 -4346 111 7492 7491 7493 -4347 111 7495 7494 7496 -4348 111 7498 7497 7499 -4349 111 7501 7500 7502 -4350 111 7504 7503 7505 -4351 111 7507 7506 7508 -4352 111 7510 7509 7511 -4353 111 7513 7512 7514 -4354 111 7516 7515 7517 -4355 111 7519 7518 7520 -4356 111 7522 7521 7523 -4357 111 7525 7524 7526 -4358 111 7528 7527 7529 -4359 111 7531 7530 7532 -4360 111 7534 7533 7535 -4361 111 7537 7536 7538 -4362 111 7540 7539 7541 -4363 111 7543 7542 7544 -4364 111 7546 7545 7547 -4365 111 7549 7548 7550 -4366 111 7552 7551 7553 -4367 111 7555 7554 7556 -4368 111 7558 7557 7559 -4369 111 7561 7560 7562 -4370 111 7564 7563 7565 -4371 111 7567 7566 7568 -4372 111 7570 7569 7571 -4373 111 7573 7572 7574 -4374 111 7576 7575 7577 -4375 111 7579 7578 7580 -4376 111 7582 7581 7583 -4377 111 7585 7584 7586 -4378 111 7588 7587 7589 -4379 111 7591 7590 7592 -4380 111 7594 7593 7595 -4381 111 7597 7596 7598 -4382 111 7600 7599 7601 -4383 111 7603 7602 7604 -4384 111 7606 7605 7607 -4385 111 7609 7608 7610 -4386 111 7612 7611 7613 -4387 111 7615 7614 7616 -4388 111 7618 7617 7619 -4389 111 7621 7620 7622 -4390 111 7624 7623 7625 -4391 111 7627 7626 7628 -4392 111 7630 7629 7631 -4393 111 7633 7632 7634 -4394 111 7636 7635 7637 -4395 111 7639 7638 7640 -4396 111 7642 7641 7643 -4397 111 7645 7644 7646 -4398 111 7648 7647 7649 -4399 111 7651 7650 7652 -4400 111 7654 7653 7655 -4401 111 7657 7656 7658 -4402 111 7660 7659 7661 -4403 111 7663 7662 7664 -4404 111 7666 7665 7667 -4405 111 7669 7668 7670 -4406 111 7672 7671 7673 -4407 111 7675 7674 7676 -4408 111 7678 7677 7679 -4409 111 7681 7680 7682 -4410 111 7684 7683 7685 -4411 111 7687 7686 7688 -4412 111 7690 7689 7691 -4413 111 7693 7692 7694 -4414 111 7696 7695 7697 -4415 111 7699 7698 7700 -4416 111 7702 7701 7703 -4417 111 7705 7704 7706 -4418 111 7708 7707 7709 -4419 111 7711 7710 7712 -4420 111 7714 7713 7715 -4421 111 7717 7716 7718 -4422 111 7720 7719 7721 -4423 111 7723 7722 7724 -4424 111 7726 7725 7727 -4425 111 7729 7728 7730 -4426 111 7732 7731 7733 -4427 111 7735 7734 7736 -4428 111 7738 7737 7739 -4429 111 7741 7740 7742 -4430 111 7744 7743 7745 -4431 111 7747 7746 7748 -4432 111 7750 7749 7751 -4433 111 7753 7752 7754 -4434 111 7756 7755 7757 -4435 111 7759 7758 7760 -4436 111 7762 7761 7763 -4437 111 7765 7764 7766 -4438 111 7768 7767 7769 -4439 111 7771 7770 7772 -4440 111 7774 7773 7775 -4441 111 7777 7776 7778 -4442 111 7780 7779 7781 -4443 111 7783 7782 7784 -4444 111 7786 7785 7787 -4445 111 7789 7788 7790 -4446 111 7792 7791 7793 -4447 111 7795 7794 7796 -4448 111 7798 7797 7799 -4449 111 7801 7800 7802 -4450 111 7804 7803 7805 -4451 111 7807 7806 7808 -4452 111 7810 7809 7811 -4453 111 7813 7812 7814 -4454 111 7816 7815 7817 -4455 111 7819 7818 7820 -4456 111 7822 7821 7823 -4457 111 7825 7824 7826 -4458 111 7828 7827 7829 -4459 111 7831 7830 7832 -4460 111 7834 7833 7835 -4461 111 7837 7836 7838 -4462 111 7840 7839 7841 -4463 111 7843 7842 7844 -4464 111 7846 7845 7847 -4465 111 7849 7848 7850 -4466 111 7852 7851 7853 -4467 111 7855 7854 7856 -4468 111 7858 7857 7859 -4469 111 7861 7860 7862 -4470 111 7864 7863 7865 -4471 111 7867 7866 7868 -4472 111 7870 7869 7871 -4473 111 7873 7872 7874 -4474 111 7876 7875 7877 -4475 111 7879 7878 7880 -4476 111 7882 7881 7883 -4477 111 7885 7884 7886 -4478 111 7888 7887 7889 -4479 111 7891 7890 7892 -4480 111 7894 7893 7895 -4481 111 7897 7896 7898 -4482 111 7900 7899 7901 -4483 111 7903 7902 7904 -4484 111 7906 7905 7907 -4485 111 7909 7908 7910 -4486 111 7912 7911 7913 -4487 111 7915 7914 7916 -4488 111 7918 7917 7919 -4489 111 7921 7920 7922 -4490 111 7924 7923 7925 -4491 111 7927 7926 7928 -4492 111 7930 7929 7931 -4493 111 7933 7932 7934 -4494 111 7936 7935 7937 -4495 111 7939 7938 7940 -4496 111 7942 7941 7943 -4497 111 7945 7944 7946 -4498 111 7948 7947 7949 -4499 111 7951 7950 7952 -4500 111 7954 7953 7955 -4501 111 7957 7956 7958 -4502 111 7960 7959 7961 -4503 111 7963 7962 7964 -4504 111 7966 7965 7967 -4505 111 7969 7968 7970 -4506 111 7972 7971 7973 -4507 111 7975 7974 7976 -4508 111 7978 7977 7979 -4509 111 7981 7980 7982 -4510 111 7984 7983 7985 -4511 111 7987 7986 7988 -4512 111 7990 7989 7991 -4513 111 7993 7992 7994 -4514 111 7996 7995 7997 -4515 111 7999 7998 8000 -4516 111 8002 8001 8003 -4517 111 8005 8004 8006 -4518 111 8008 8007 8009 -4519 111 8011 8010 8012 -4520 111 8014 8013 8015 -4521 111 8017 8016 8018 -4522 111 8020 8019 8021 -4523 111 8023 8022 8024 -4524 111 8026 8025 8027 -4525 111 8029 8028 8030 -4526 111 8032 8031 8033 -4527 111 8035 8034 8036 -4528 111 8038 8037 8039 -4529 111 8041 8040 8042 -4530 111 8044 8043 8045 -4531 111 8047 8046 8048 -4532 111 8050 8049 8051 -4533 111 8053 8052 8054 -4534 111 8056 8055 8057 -4535 111 8059 8058 8060 -4536 111 8062 8061 8063 -4537 111 8065 8064 8066 -4538 111 8068 8067 8069 -4539 111 8071 8070 8072 -4540 111 8074 8073 8075 -4541 111 8077 8076 8078 -4542 111 8080 8079 8081 -4543 111 8083 8082 8084 -4544 111 8086 8085 8087 -4545 111 8089 8088 8090 -4546 111 8092 8091 8093 -4547 111 8095 8094 8096 -4548 111 8098 8097 8099 -4549 111 8101 8100 8102 -4550 111 8104 8103 8105 -4551 111 8107 8106 8108 -4552 111 8110 8109 8111 -4553 111 8113 8112 8114 -4554 111 8116 8115 8117 -4555 111 8119 8118 8120 -4556 111 8122 8121 8123 -4557 111 8125 8124 8126 -4558 111 8128 8127 8129 -4559 111 8131 8130 8132 -4560 111 8134 8133 8135 -4561 111 8137 8136 8138 -4562 111 8140 8139 8141 -4563 111 8143 8142 8144 -4564 111 8146 8145 8147 -4565 111 8149 8148 8150 -4566 111 8152 8151 8153 -4567 111 8155 8154 8156 -4568 111 8158 8157 8159 -4569 111 8161 8160 8162 -4570 111 8164 8163 8165 -4571 111 8167 8166 8168 -4572 111 8170 8169 8171 -4573 111 8173 8172 8174 -4574 111 8176 8175 8177 -4575 111 8179 8178 8180 -4576 111 8182 8181 8183 -4577 111 8185 8184 8186 -4578 111 8188 8187 8189 -4579 111 8191 8190 8192 -4580 111 8194 8193 8195 -4581 111 8197 8196 8198 -4582 111 8200 8199 8201 -4583 111 8203 8202 8204 -4584 111 8206 8205 8207 -4585 111 8209 8208 8210 -4586 111 8212 8211 8213 -4587 111 8215 8214 8216 -4588 111 8218 8217 8219 -4589 111 8221 8220 8222 -4590 111 8224 8223 8225 -4591 111 8227 8226 8228 -4592 111 8230 8229 8231 -4593 111 8233 8232 8234 -4594 111 8236 8235 8237 -4595 111 8239 8238 8240 -4596 111 8242 8241 8243 -4597 111 8245 8244 8246 -4598 111 8248 8247 8249 -4599 111 8251 8250 8252 -4600 111 8254 8253 8255 -4601 111 8257 8256 8258 -4602 111 8260 8259 8261 -4603 111 8263 8262 8264 -4604 111 8266 8265 8267 -4605 111 8269 8268 8270 -4606 111 8272 8271 8273 -4607 111 8275 8274 8276 -4608 111 8278 8277 8279 -4609 111 8281 8280 8282 -4610 111 8284 8283 8285 -4611 111 8287 8286 8288 -4612 111 8290 8289 8291 -4613 111 8293 8292 8294 -4614 111 8296 8295 8297 -4615 111 8299 8298 8300 -4616 111 8302 8301 8303 -4617 111 8305 8304 8306 -4618 111 8308 8307 8309 -4619 111 8311 8310 8312 -4620 111 8314 8313 8315 -4621 111 8317 8316 8318 -4622 111 8320 8319 8321 -4623 111 8323 8322 8324 -4624 111 8326 8325 8327 -4625 111 8329 8328 8330 -4626 111 8332 8331 8333 -4627 111 8335 8334 8336 -4628 111 8338 8337 8339 -4629 111 8341 8340 8342 -4630 111 8344 8343 8345 -4631 111 8347 8346 8348 -4632 111 8350 8349 8351 -4633 111 8353 8352 8354 -4634 111 8356 8355 8357 -4635 111 8359 8358 8360 -4636 111 8362 8361 8363 -4637 111 8365 8364 8366 -4638 111 8368 8367 8369 -4639 111 8371 8370 8372 -4640 111 8374 8373 8375 -4641 111 8377 8376 8378 -4642 111 8380 8379 8381 -4643 111 8383 8382 8384 -4644 111 8386 8385 8387 -4645 111 8389 8388 8390 -4646 111 8392 8391 8393 -4647 111 8395 8394 8396 -4648 111 8398 8397 8399 -4649 111 8401 8400 8402 -4650 111 8404 8403 8405 -4651 111 8407 8406 8408 -4652 111 8410 8409 8411 -4653 111 8413 8412 8414 -4654 111 8416 8415 8417 -4655 111 8419 8418 8420 -4656 111 8422 8421 8423 -4657 111 8425 8424 8426 -4658 111 8428 8427 8429 -4659 111 8431 8430 8432 -4660 111 8434 8433 8435 -4661 111 8437 8436 8438 -4662 111 8440 8439 8441 -4663 111 8443 8442 8444 -4664 111 8446 8445 8447 -4665 111 8449 8448 8450 -4666 111 8452 8451 8453 -4667 111 8455 8454 8456 -4668 111 8458 8457 8459 -4669 111 8461 8460 8462 -4670 111 8464 8463 8465 -4671 111 8467 8466 8468 -4672 111 8470 8469 8471 -4673 111 8473 8472 8474 -4674 111 8476 8475 8477 -4675 111 8479 8478 8480 -4676 111 8482 8481 8483 -4677 111 8485 8484 8486 -4678 111 8488 8487 8489 -4679 111 8491 8490 8492 -4680 111 8494 8493 8495 -4681 111 8497 8496 8498 -4682 111 8500 8499 8501 -4683 111 8503 8502 8504 -4684 111 8506 8505 8507 -4685 111 8509 8508 8510 -4686 111 8512 8511 8513 -4687 111 8515 8514 8516 -4688 111 8518 8517 8519 -4689 111 8521 8520 8522 -4690 111 8524 8523 8525 -4691 111 8527 8526 8528 -4692 111 8530 8529 8531 -4693 111 8533 8532 8534 -4694 111 8536 8535 8537 -4695 111 8539 8538 8540 -4696 111 8542 8541 8543 -4697 111 8545 8544 8546 -4698 111 8548 8547 8549 -4699 111 8551 8550 8552 -4700 111 8554 8553 8555 -4701 111 8557 8556 8558 -4702 111 8560 8559 8561 -4703 111 8563 8562 8564 -4704 111 8566 8565 8567 -4705 111 8569 8568 8570 -4706 111 8572 8571 8573 -4707 111 8575 8574 8576 -4708 111 8578 8577 8579 -4709 111 8581 8580 8582 -4710 111 8584 8583 8585 -4711 111 8587 8586 8588 -4712 111 8590 8589 8591 -4713 111 8593 8592 8594 -4714 111 8596 8595 8597 -4715 111 8599 8598 8600 -4716 111 8602 8601 8603 -4717 111 8605 8604 8606 -4718 111 8608 8607 8609 -4719 111 8611 8610 8612 -4720 111 8614 8613 8615 -4721 111 8617 8616 8618 -4722 111 8620 8619 8621 -4723 111 8623 8622 8624 -4724 111 8626 8625 8627 -4725 111 8629 8628 8630 -4726 111 8632 8631 8633 -4727 111 8635 8634 8636 -4728 111 8638 8637 8639 -4729 111 8641 8640 8642 -4730 111 8644 8643 8645 -4731 111 8647 8646 8648 -4732 111 8650 8649 8651 -4733 111 8653 8652 8654 -4734 111 8656 8655 8657 -4735 111 8659 8658 8660 -4736 111 8662 8661 8663 -4737 111 8665 8664 8666 -4738 111 8668 8667 8669 -4739 111 8671 8670 8672 -4740 111 8674 8673 8675 -4741 111 8677 8676 8678 -4742 111 8680 8679 8681 -4743 111 8683 8682 8684 -4744 111 8686 8685 8687 -4745 111 8689 8688 8690 -4746 111 8692 8691 8693 -4747 111 8695 8694 8696 -4748 111 8698 8697 8699 -4749 111 8701 8700 8702 -4750 111 8704 8703 8705 -4751 111 8707 8706 8708 -4752 111 8710 8709 8711 -4753 111 8713 8712 8714 -4754 111 8716 8715 8717 -4755 111 8719 8718 8720 -4756 111 8722 8721 8723 -4757 111 8725 8724 8726 -4758 111 8728 8727 8729 -4759 111 8731 8730 8732 -4760 111 8734 8733 8735 -4761 111 8737 8736 8738 -4762 111 8740 8739 8741 -4763 111 8743 8742 8744 -4764 111 8746 8745 8747 -4765 111 8749 8748 8750 -4766 111 8752 8751 8753 -4767 111 8755 8754 8756 -4768 111 8758 8757 8759 -4769 111 8761 8760 8762 -4770 111 8764 8763 8765 -4771 111 8767 8766 8768 -4772 111 8770 8769 8771 -4773 111 8773 8772 8774 -4774 111 8776 8775 8777 -4775 111 8779 8778 8780 -4776 111 8782 8781 8783 -4777 111 8785 8784 8786 -4778 111 8788 8787 8789 -4779 111 8791 8790 8792 -4780 111 8794 8793 8795 -4781 111 8797 8796 8798 -4782 111 8800 8799 8801 -4783 111 8803 8802 8804 -4784 111 8806 8805 8807 -4785 111 8809 8808 8810 -4786 111 8812 8811 8813 -4787 111 8815 8814 8816 -4788 111 8818 8817 8819 -4789 111 8821 8820 8822 -4790 111 8824 8823 8825 -4791 111 8827 8826 8828 -4792 111 8830 8829 8831 -4793 111 8833 8832 8834 -4794 111 8836 8835 8837 -4795 111 8839 8838 8840 -4796 111 8842 8841 8843 -4797 111 8845 8844 8846 -4798 111 8848 8847 8849 -4799 111 8851 8850 8852 -4800 111 8854 8853 8855 -4801 111 8857 8856 8858 -4802 111 8860 8859 8861 -4803 111 8863 8862 8864 -4804 111 8866 8865 8867 -4805 111 8869 8868 8870 -4806 111 8872 8871 8873 -4807 111 8875 8874 8876 -4808 111 8878 8877 8879 -4809 111 8881 8880 8882 -4810 111 8884 8883 8885 -4811 111 8887 8886 8888 -4812 111 8890 8889 8891 -4813 111 8893 8892 8894 -4814 111 8896 8895 8897 -4815 111 8899 8898 8900 -4816 111 8902 8901 8903 -4817 111 8905 8904 8906 -4818 111 8908 8907 8909 -4819 111 8911 8910 8912 -4820 111 8914 8913 8915 -4821 111 8917 8916 8918 -4822 111 8920 8919 8921 -4823 111 8923 8922 8924 -4824 111 8926 8925 8927 -4825 111 8929 8928 8930 -4826 111 8932 8931 8933 -4827 111 8935 8934 8936 -4828 111 8938 8937 8939 -4829 111 8941 8940 8942 -4830 111 8944 8943 8945 -4831 111 8947 8946 8948 -4832 111 8950 8949 8951 -4833 111 8953 8952 8954 -4834 111 8956 8955 8957 -4835 111 8959 8958 8960 -4836 111 8962 8961 8963 -4837 111 8965 8964 8966 -4838 111 8968 8967 8969 -4839 111 8971 8970 8972 -4840 111 8974 8973 8975 -4841 111 8977 8976 8978 -4842 111 8980 8979 8981 -4843 111 8983 8982 8984 -4844 111 8986 8985 8987 -4845 111 8989 8988 8990 -4846 111 8992 8991 8993 -4847 111 8995 8994 8996 -4848 111 8998 8997 8999 -4849 111 9001 9000 9002 -4850 111 9004 9003 9005 -4851 111 9007 9006 9008 -4852 111 9010 9009 9011 -4853 111 9013 9012 9014 -4854 111 9016 9015 9017 -4855 111 9019 9018 9020 -4856 111 9022 9021 9023 -4857 111 9025 9024 9026 -4858 111 9028 9027 9029 -4859 111 9031 9030 9032 -4860 111 9034 9033 9035 -4861 111 9037 9036 9038 -4862 111 9040 9039 9041 -4863 111 9043 9042 9044 -4864 111 9046 9045 9047 -4865 111 9049 9048 9050 -4866 111 9052 9051 9053 -4867 111 9055 9054 9056 -4868 111 9058 9057 9059 -4869 111 9061 9060 9062 -4870 111 9064 9063 9065 -4871 111 9067 9066 9068 -4872 111 9070 9069 9071 -4873 111 9073 9072 9074 -4874 111 9076 9075 9077 -4875 111 9079 9078 9080 -4876 111 9082 9081 9083 -4877 111 9085 9084 9086 -4878 111 9088 9087 9089 -4879 111 9091 9090 9092 -4880 111 9094 9093 9095 -4881 111 9097 9096 9098 -4882 111 9100 9099 9101 -4883 111 9103 9102 9104 -4884 111 9106 9105 9107 -4885 111 9109 9108 9110 -4886 111 9112 9111 9113 -4887 111 9115 9114 9116 -4888 111 9118 9117 9119 -4889 111 9121 9120 9122 -4890 111 9124 9123 9125 -4891 111 9127 9126 9128 -4892 111 9130 9129 9131 -4893 111 9133 9132 9134 -4894 111 9136 9135 9137 -4895 111 9139 9138 9140 -4896 111 9142 9141 9143 -4897 111 9145 9144 9146 -4898 111 9148 9147 9149 -4899 111 9151 9150 9152 -4900 111 9154 9153 9155 -4901 111 9157 9156 9158 -4902 111 9160 9159 9161 -4903 111 9163 9162 9164 -4904 111 9166 9165 9167 -4905 111 9169 9168 9170 -4906 111 9172 9171 9173 -4907 111 9175 9174 9176 -4908 111 9178 9177 9179 -4909 111 9181 9180 9182 -4910 111 9184 9183 9185 -4911 111 9187 9186 9188 -4912 111 9190 9189 9191 -4913 111 9193 9192 9194 -4914 111 9196 9195 9197 -4915 111 9199 9198 9200 -4916 111 9202 9201 9203 -4917 111 9205 9204 9206 -4918 111 9208 9207 9209 -4919 111 9211 9210 9212 -4920 111 9214 9213 9215 -4921 111 9217 9216 9218 -4922 111 9220 9219 9221 -4923 111 9223 9222 9224 -4924 111 9226 9225 9227 -4925 111 9229 9228 9230 -4926 111 9232 9231 9233 -4927 111 9235 9234 9236 -4928 111 9238 9237 9239 -4929 111 9241 9240 9242 -4930 111 9244 9243 9245 -4931 111 9247 9246 9248 -4932 111 9250 9249 9251 -4933 111 9253 9252 9254 -4934 111 9256 9255 9257 -4935 111 9259 9258 9260 -4936 111 9262 9261 9263 -4937 111 9265 9264 9266 -4938 111 9268 9267 9269 -4939 111 9271 9270 9272 -4940 111 9274 9273 9275 -4941 111 9277 9276 9278 -4942 111 9280 9279 9281 -4943 111 9283 9282 9284 -4944 111 9286 9285 9287 -4945 111 9289 9288 9290 -4946 111 9292 9291 9293 -4947 111 9295 9294 9296 -4948 111 9298 9297 9299 -4949 111 9301 9300 9302 -4950 111 9304 9303 9305 -4951 111 9307 9306 9308 -4952 111 9310 9309 9311 -4953 111 9313 9312 9314 -4954 111 9316 9315 9317 -4955 111 9319 9318 9320 -4956 111 9322 9321 9323 -4957 111 9325 9324 9326 -4958 111 9328 9327 9329 -4959 111 9331 9330 9332 -4960 111 9334 9333 9335 -4961 111 9337 9336 9338 -4962 111 9340 9339 9341 -4963 111 9343 9342 9344 -4964 111 9346 9345 9347 -4965 111 9349 9348 9350 -4966 111 9352 9351 9353 -4967 111 9355 9354 9356 -4968 111 9358 9357 9359 -4969 111 9361 9360 9362 -4970 111 9364 9363 9365 -4971 111 9367 9366 9368 -4972 111 9370 9369 9371 -4973 111 9373 9372 9374 -4974 111 9376 9375 9377 -4975 111 9379 9378 9380 -4976 111 9382 9381 9383 -4977 111 9385 9384 9386 -4978 111 9388 9387 9389 -4979 111 9391 9390 9392 -4980 111 9394 9393 9395 -4981 111 9397 9396 9398 -4982 111 9400 9399 9401 -4983 111 9403 9402 9404 -4984 111 9406 9405 9407 -4985 111 9409 9408 9410 -4986 111 9412 9411 9413 -4987 111 9415 9414 9416 -4988 111 9418 9417 9419 -4989 111 9421 9420 9422 -4990 111 9424 9423 9425 -4991 111 9427 9426 9428 -4992 111 9430 9429 9431 -4993 111 9433 9432 9434 -4994 111 9436 9435 9437 -4995 111 9439 9438 9440 -4996 111 9442 9441 9443 -4997 111 9445 9444 9446 -4998 111 9448 9447 9449 -4999 111 9451 9450 9452 -5000 111 9454 9453 9455 -5001 111 9457 9456 9458 -5002 111 9460 9459 9461 -5003 111 9463 9462 9464 -5004 111 9466 9465 9467 -5005 111 9469 9468 9470 -5006 111 9472 9471 9473 -5007 111 9475 9474 9476 -5008 111 9478 9477 9479 -5009 111 9481 9480 9482 -5010 111 9484 9483 9485 -5011 111 9487 9486 9488 -5012 111 9490 9489 9491 -5013 111 9493 9492 9494 -5014 111 9496 9495 9497 -5015 111 9499 9498 9500 -5016 111 9502 9501 9503 -5017 111 9505 9504 9506 -5018 111 9508 9507 9509 -5019 111 9511 9510 9512 -5020 111 9514 9513 9515 -5021 111 9517 9516 9518 -5022 111 9520 9519 9521 -5023 111 9523 9522 9524 -5024 111 9526 9525 9527 -5025 111 9529 9528 9530 -5026 111 9532 9531 9533 -5027 111 9535 9534 9536 -5028 111 9538 9537 9539 -5029 111 9541 9540 9542 -5030 111 9544 9543 9545 -5031 111 9547 9546 9548 -5032 111 9550 9549 9551 -5033 111 9553 9552 9554 -5034 111 9556 9555 9557 -5035 111 9559 9558 9560 -5036 111 9562 9561 9563 -5037 111 9565 9564 9566 -5038 111 9568 9567 9569 -5039 111 9571 9570 9572 -5040 111 9574 9573 9575 -5041 111 9577 9576 9578 -5042 111 9580 9579 9581 -5043 111 9583 9582 9584 -5044 111 9586 9585 9587 -5045 111 9589 9588 9590 -5046 111 9592 9591 9593 -5047 111 9595 9594 9596 -5048 111 9598 9597 9599 -5049 111 9601 9600 9602 -5050 111 9604 9603 9605 -5051 111 9607 9606 9608 -5052 111 9610 9609 9611 -5053 111 9613 9612 9614 -5054 111 9616 9615 9617 -5055 111 9619 9618 9620 -5056 111 9622 9621 9623 -5057 111 9625 9624 9626 -5058 111 9628 9627 9629 -5059 111 9631 9630 9632 -5060 111 9634 9633 9635 -5061 111 9637 9636 9638 -5062 111 9640 9639 9641 -5063 111 9643 9642 9644 -5064 111 9646 9645 9647 -5065 111 9649 9648 9650 -5066 111 9652 9651 9653 -5067 111 9655 9654 9656 -5068 111 9658 9657 9659 -5069 111 9661 9660 9662 -5070 111 9664 9663 9665 -5071 111 9667 9666 9668 -5072 111 9670 9669 9671 -5073 111 9673 9672 9674 -5074 111 9676 9675 9677 -5075 111 9679 9678 9680 -5076 111 9682 9681 9683 -5077 111 9685 9684 9686 -5078 111 9688 9687 9689 -5079 111 9691 9690 9692 -5080 111 9694 9693 9695 -5081 111 9697 9696 9698 -5082 111 9700 9699 9701 -5083 111 9703 9702 9704 -5084 111 9706 9705 9707 -5085 111 9709 9708 9710 -5086 111 9712 9711 9713 -5087 111 9715 9714 9716 -5088 111 9718 9717 9719 -5089 111 9721 9720 9722 -5090 111 9724 9723 9725 -5091 111 9727 9726 9728 -5092 111 9730 9729 9731 -5093 111 9733 9732 9734 -5094 111 9736 9735 9737 +2259 62 1232 1227 1228 +2260 111 1235 1233 1234 +2261 111 1238 1236 1237 +2262 111 1241 1239 1240 +2263 111 1244 1242 1243 +2264 111 1247 1245 1246 +2265 111 1250 1248 1249 +2266 111 1253 1251 1252 +2267 111 1256 1254 1255 +2268 111 1259 1257 1258 +2269 111 1262 1260 1261 +2270 111 1265 1263 1264 +2271 111 1268 1266 1267 +2272 111 1271 1269 1270 +2273 111 1274 1272 1273 +2274 111 1277 1275 1276 +2275 111 1280 1278 1279 +2276 111 1283 1281 1282 +2277 111 1286 1284 1285 +2278 111 1289 1287 1288 +2279 111 1292 1290 1291 +2280 111 1295 1293 1294 +2281 111 1298 1296 1297 +2282 111 1301 1299 1300 +2283 111 1304 1302 1303 +2284 111 1307 1305 1306 +2285 111 1310 1308 1309 +2286 111 1313 1311 1312 +2287 111 1316 1314 1315 +2288 111 1319 1317 1318 +2289 111 1322 1320 1321 +2290 111 1325 1323 1324 +2291 111 1328 1326 1327 +2292 111 1331 1329 1330 +2293 111 1334 1332 1333 +2294 111 1337 1335 1336 +2295 111 1340 1338 1339 +2296 111 1343 1341 1342 +2297 111 1346 1344 1345 +2298 111 1349 1347 1348 +2299 111 1352 1350 1351 +2300 111 1355 1353 1354 +2301 111 1358 1356 1357 +2302 111 1361 1359 1360 +2303 111 1364 1362 1363 +2304 111 1367 1365 1366 +2305 111 1370 1368 1369 +2306 111 1373 1371 1372 +2307 111 1376 1374 1375 +2308 111 1379 1377 1378 +2309 111 1382 1380 1381 +2310 111 1385 1383 1384 +2311 111 1388 1386 1387 +2312 111 1391 1389 1390 +2313 111 1394 1392 1393 +2314 111 1397 1395 1396 +2315 111 1400 1398 1399 +2316 111 1403 1401 1402 +2317 111 1406 1404 1405 +2318 111 1409 1407 1408 +2319 111 1412 1410 1411 +2320 111 1415 1413 1414 +2321 111 1418 1416 1417 +2322 111 1421 1419 1420 +2323 111 1424 1422 1423 +2324 111 1427 1425 1426 +2325 111 1430 1428 1429 +2326 111 1433 1431 1432 +2327 111 1436 1434 1435 +2328 111 1439 1437 1438 +2329 111 1442 1440 1441 +2330 111 1445 1443 1444 +2331 111 1448 1446 1447 +2332 111 1451 1449 1450 +2333 111 1454 1452 1453 +2334 111 1457 1455 1456 +2335 111 1460 1458 1459 +2336 111 1463 1461 1462 +2337 111 1466 1464 1465 +2338 111 1469 1467 1468 +2339 111 1472 1470 1471 +2340 111 1475 1473 1474 +2341 111 1478 1476 1477 +2342 111 1481 1479 1480 +2343 111 1484 1482 1483 +2344 111 1487 1485 1486 +2345 111 1490 1488 1489 +2346 111 1493 1491 1492 +2347 111 1496 1494 1495 +2348 111 1499 1497 1498 +2349 111 1502 1500 1501 +2350 111 1505 1503 1504 +2351 111 1508 1506 1507 +2352 111 1511 1509 1510 +2353 111 1514 1512 1513 +2354 111 1517 1515 1516 +2355 111 1520 1518 1519 +2356 111 1523 1521 1522 +2357 111 1526 1524 1525 +2358 111 1529 1527 1528 +2359 111 1532 1530 1531 +2360 111 1535 1533 1534 +2361 111 1538 1536 1537 +2362 111 1541 1539 1540 +2363 111 1544 1542 1543 +2364 111 1547 1545 1546 +2365 111 1550 1548 1549 +2366 111 1553 1551 1552 +2367 111 1556 1554 1555 +2368 111 1559 1557 1558 +2369 111 1562 1560 1561 +2370 111 1565 1563 1564 +2371 111 1568 1566 1567 +2372 111 1571 1569 1570 +2373 111 1574 1572 1573 +2374 111 1577 1575 1576 +2375 111 1580 1578 1579 +2376 111 1583 1581 1582 +2377 111 1586 1584 1585 +2378 111 1589 1587 1588 +2379 111 1592 1590 1591 +2380 111 1595 1593 1594 +2381 111 1598 1596 1597 +2382 111 1601 1599 1600 +2383 111 1604 1602 1603 +2384 111 1607 1605 1606 +2385 111 1610 1608 1609 +2386 111 1613 1611 1612 +2387 111 1616 1614 1615 +2388 111 1619 1617 1618 +2389 111 1622 1620 1621 +2390 111 1625 1623 1624 +2391 111 1628 1626 1627 +2392 111 1631 1629 1630 +2393 111 1634 1632 1633 +2394 111 1637 1635 1636 +2395 111 1640 1638 1639 +2396 111 1643 1641 1642 +2397 111 1646 1644 1645 +2398 111 1649 1647 1648 +2399 111 1652 1650 1651 +2400 111 1655 1653 1654 +2401 111 1658 1656 1657 +2402 111 1661 1659 1660 +2403 111 1664 1662 1663 +2404 111 1667 1665 1666 +2405 111 1670 1668 1669 +2406 111 1673 1671 1672 +2407 111 1676 1674 1675 +2408 111 1679 1677 1678 +2409 111 1682 1680 1681 +2410 111 1685 1683 1684 +2411 111 1688 1686 1687 +2412 111 1691 1689 1690 +2413 111 1694 1692 1693 +2414 111 1697 1695 1696 +2415 111 1700 1698 1699 +2416 111 1703 1701 1702 +2417 111 1706 1704 1705 +2418 111 1709 1707 1708 +2419 111 1712 1710 1711 +2420 111 1715 1713 1714 +2421 111 1718 1716 1717 +2422 111 1721 1719 1720 +2423 111 1724 1722 1723 +2424 111 1727 1725 1726 +2425 111 1730 1728 1729 +2426 111 1733 1731 1732 +2427 111 1736 1734 1735 +2428 111 1739 1737 1738 +2429 111 1742 1740 1741 +2430 111 1745 1743 1744 +2431 111 1748 1746 1747 +2432 111 1751 1749 1750 +2433 111 1754 1752 1753 +2434 111 1757 1755 1756 +2435 111 1760 1758 1759 +2436 111 1763 1761 1762 +2437 111 1766 1764 1765 +2438 111 1769 1767 1768 +2439 111 1772 1770 1771 +2440 111 1775 1773 1774 +2441 111 1778 1776 1777 +2442 111 1781 1779 1780 +2443 111 1784 1782 1783 +2444 111 1787 1785 1786 +2445 111 1790 1788 1789 +2446 111 1793 1791 1792 +2447 111 1796 1794 1795 +2448 111 1799 1797 1798 +2449 111 1802 1800 1801 +2450 111 1805 1803 1804 +2451 111 1808 1806 1807 +2452 111 1811 1809 1810 +2453 111 1814 1812 1813 +2454 111 1817 1815 1816 +2455 111 1820 1818 1819 +2456 111 1823 1821 1822 +2457 111 1826 1824 1825 +2458 111 1829 1827 1828 +2459 111 1832 1830 1831 +2460 111 1835 1833 1834 +2461 111 1838 1836 1837 +2462 111 1841 1839 1840 +2463 111 1844 1842 1843 +2464 111 1847 1845 1846 +2465 111 1850 1848 1849 +2466 111 1853 1851 1852 +2467 111 1856 1854 1855 +2468 111 1859 1857 1858 +2469 111 1862 1860 1861 +2470 111 1865 1863 1864 +2471 111 1868 1866 1867 +2472 111 1871 1869 1870 +2473 111 1874 1872 1873 +2474 111 1877 1875 1876 +2475 111 1880 1878 1879 +2476 111 1883 1881 1882 +2477 111 1886 1884 1885 +2478 111 1889 1887 1888 +2479 111 1892 1890 1891 +2480 111 1895 1893 1894 +2481 111 1898 1896 1897 +2482 111 1901 1899 1900 +2483 111 1904 1902 1903 +2484 111 1907 1905 1906 +2485 111 1910 1908 1909 +2486 111 1913 1911 1912 +2487 111 1916 1914 1915 +2488 111 1919 1917 1918 +2489 111 1922 1920 1921 +2490 111 1925 1923 1924 +2491 111 1928 1926 1927 +2492 111 1931 1929 1930 +2493 111 1934 1932 1933 +2494 111 1937 1935 1936 +2495 111 1940 1938 1939 +2496 111 1943 1941 1942 +2497 111 1946 1944 1945 +2498 111 1949 1947 1948 +2499 111 1952 1950 1951 +2500 111 1955 1953 1954 +2501 111 1958 1956 1957 +2502 111 1961 1959 1960 +2503 111 1964 1962 1963 +2504 111 1967 1965 1966 +2505 111 1970 1968 1969 +2506 111 1973 1971 1972 +2507 111 1976 1974 1975 +2508 111 1979 1977 1978 +2509 111 1982 1980 1981 +2510 111 1985 1983 1984 +2511 111 1988 1986 1987 +2512 111 1991 1989 1990 +2513 111 1994 1992 1993 +2514 111 1997 1995 1996 +2515 111 2000 1998 1999 +2516 111 2003 2001 2002 +2517 111 2006 2004 2005 +2518 111 2009 2007 2008 +2519 111 2012 2010 2011 +2520 111 2015 2013 2014 +2521 111 2018 2016 2017 +2522 111 2021 2019 2020 +2523 111 2024 2022 2023 +2524 111 2027 2025 2026 +2525 111 2030 2028 2029 +2526 111 2033 2031 2032 +2527 111 2036 2034 2035 +2528 111 2039 2037 2038 +2529 111 2042 2040 2041 +2530 111 2045 2043 2044 +2531 111 2048 2046 2047 +2532 111 2051 2049 2050 +2533 111 2054 2052 2053 +2534 111 2057 2055 2056 +2535 111 2060 2058 2059 +2536 111 2063 2061 2062 +2537 111 2066 2064 2065 +2538 111 2069 2067 2068 +2539 111 2072 2070 2071 +2540 111 2075 2073 2074 +2541 111 2078 2076 2077 +2542 111 2081 2079 2080 +2543 111 2084 2082 2083 +2544 111 2087 2085 2086 +2545 111 2090 2088 2089 +2546 111 2093 2091 2092 +2547 111 2096 2094 2095 +2548 111 2099 2097 2098 +2549 111 2102 2100 2101 +2550 111 2105 2103 2104 +2551 111 2108 2106 2107 +2552 111 2111 2109 2110 +2553 111 2114 2112 2113 +2554 111 2117 2115 2116 +2555 111 2120 2118 2119 +2556 111 2123 2121 2122 +2557 111 2126 2124 2125 +2558 111 2129 2127 2128 +2559 111 2132 2130 2131 +2560 111 2135 2133 2134 +2561 111 2138 2136 2137 +2562 111 2141 2139 2140 +2563 111 2144 2142 2143 +2564 111 2147 2145 2146 +2565 111 2150 2148 2149 +2566 111 2153 2151 2152 +2567 111 2156 2154 2155 +2568 111 2159 2157 2158 +2569 111 2162 2160 2161 +2570 111 2165 2163 2164 +2571 111 2168 2166 2167 +2572 111 2171 2169 2170 +2573 111 2174 2172 2173 +2574 111 2177 2175 2176 +2575 111 2180 2178 2179 +2576 111 2183 2181 2182 +2577 111 2186 2184 2185 +2578 111 2189 2187 2188 +2579 111 2192 2190 2191 +2580 111 2195 2193 2194 +2581 111 2198 2196 2197 +2582 111 2201 2199 2200 +2583 111 2204 2202 2203 +2584 111 2207 2205 2206 +2585 111 2210 2208 2209 +2586 111 2213 2211 2212 +2587 111 2216 2214 2215 +2588 111 2219 2217 2218 +2589 111 2222 2220 2221 +2590 111 2225 2223 2224 +2591 111 2228 2226 2227 +2592 111 2231 2229 2230 +2593 111 2234 2232 2233 +2594 111 2237 2235 2236 +2595 111 2240 2238 2239 +2596 111 2243 2241 2242 +2597 111 2246 2244 2245 +2598 111 2249 2247 2248 +2599 111 2252 2250 2251 +2600 111 2255 2253 2254 +2601 111 2258 2256 2257 +2602 111 2261 2259 2260 +2603 111 2264 2262 2263 +2604 111 2267 2265 2266 +2605 111 2270 2268 2269 +2606 111 2273 2271 2272 +2607 111 2276 2274 2275 +2608 111 2279 2277 2278 +2609 111 2282 2280 2281 +2610 111 2285 2283 2284 +2611 111 2288 2286 2287 +2612 111 2291 2289 2290 +2613 111 2294 2292 2293 +2614 111 2297 2295 2296 +2615 111 2300 2298 2299 +2616 111 2303 2301 2302 +2617 111 2306 2304 2305 +2618 111 2309 2307 2308 +2619 111 2312 2310 2311 +2620 111 2315 2313 2314 +2621 111 2318 2316 2317 +2622 111 2321 2319 2320 +2623 111 2324 2322 2323 +2624 111 2327 2325 2326 +2625 111 2330 2328 2329 +2626 111 2333 2331 2332 +2627 111 2336 2334 2335 +2628 111 2339 2337 2338 +2629 111 2342 2340 2341 +2630 111 2345 2343 2344 +2631 111 2348 2346 2347 +2632 111 2351 2349 2350 +2633 111 2354 2352 2353 +2634 111 2357 2355 2356 +2635 111 2360 2358 2359 +2636 111 2363 2361 2362 +2637 111 2366 2364 2365 +2638 111 2369 2367 2368 +2639 111 2372 2370 2371 +2640 111 2375 2373 2374 +2641 111 2378 2376 2377 +2642 111 2381 2379 2380 +2643 111 2384 2382 2383 +2644 111 2387 2385 2386 +2645 111 2390 2388 2389 +2646 111 2393 2391 2392 +2647 111 2396 2394 2395 +2648 111 2399 2397 2398 +2649 111 2402 2400 2401 +2650 111 2405 2403 2404 +2651 111 2408 2406 2407 +2652 111 2411 2409 2410 +2653 111 2414 2412 2413 +2654 111 2417 2415 2416 +2655 111 2420 2418 2419 +2656 111 2423 2421 2422 +2657 111 2426 2424 2425 +2658 111 2429 2427 2428 +2659 111 2432 2430 2431 +2660 111 2435 2433 2434 +2661 111 2438 2436 2437 +2662 111 2441 2439 2440 +2663 111 2444 2442 2443 +2664 111 2447 2445 2446 +2665 111 2450 2448 2449 +2666 111 2453 2451 2452 +2667 111 2456 2454 2455 +2668 111 2459 2457 2458 +2669 111 2462 2460 2461 +2670 111 2465 2463 2464 +2671 111 2468 2466 2467 +2672 111 2471 2469 2470 +2673 111 2474 2472 2473 +2674 111 2477 2475 2476 +2675 111 2480 2478 2479 +2676 111 2483 2481 2482 +2677 111 2486 2484 2485 +2678 111 2489 2487 2488 +2679 111 2492 2490 2491 +2680 111 2495 2493 2494 +2681 111 2498 2496 2497 +2682 111 2501 2499 2500 +2683 111 2504 2502 2503 +2684 111 2507 2505 2506 +2685 111 2510 2508 2509 +2686 111 2513 2511 2512 +2687 111 2516 2514 2515 +2688 111 2519 2517 2518 +2689 111 2522 2520 2521 +2690 111 2525 2523 2524 +2691 111 2528 2526 2527 +2692 111 2531 2529 2530 +2693 111 2534 2532 2533 +2694 111 2537 2535 2536 +2695 111 2540 2538 2539 +2696 111 2543 2541 2542 +2697 111 2546 2544 2545 +2698 111 2549 2547 2548 +2699 111 2552 2550 2551 +2700 111 2555 2553 2554 +2701 111 2558 2556 2557 +2702 111 2561 2559 2560 +2703 111 2564 2562 2563 +2704 111 2567 2565 2566 +2705 111 2570 2568 2569 +2706 111 2573 2571 2572 +2707 111 2576 2574 2575 +2708 111 2579 2577 2578 +2709 111 2582 2580 2581 +2710 111 2585 2583 2584 +2711 111 2588 2586 2587 +2712 111 2591 2589 2590 +2713 111 2594 2592 2593 +2714 111 2597 2595 2596 +2715 111 2600 2598 2599 +2716 111 2603 2601 2602 +2717 111 2606 2604 2605 +2718 111 2609 2607 2608 +2719 111 2612 2610 2611 +2720 111 2615 2613 2614 +2721 111 2618 2616 2617 +2722 111 2621 2619 2620 +2723 111 2624 2622 2623 +2724 111 2627 2625 2626 +2725 111 2630 2628 2629 +2726 111 2633 2631 2632 +2727 111 2636 2634 2635 +2728 111 2639 2637 2638 +2729 111 2642 2640 2641 +2730 111 2645 2643 2644 +2731 111 2648 2646 2647 +2732 111 2651 2649 2650 +2733 111 2654 2652 2653 +2734 111 2657 2655 2656 +2735 111 2660 2658 2659 +2736 111 2663 2661 2662 +2737 111 2666 2664 2665 +2738 111 2669 2667 2668 +2739 111 2672 2670 2671 +2740 111 2675 2673 2674 +2741 111 2678 2676 2677 +2742 111 2681 2679 2680 +2743 111 2684 2682 2683 +2744 111 2687 2685 2686 +2745 111 2690 2688 2689 +2746 111 2693 2691 2692 +2747 111 2696 2694 2695 +2748 111 2699 2697 2698 +2749 111 2702 2700 2701 +2750 111 2705 2703 2704 +2751 111 2708 2706 2707 +2752 111 2711 2709 2710 +2753 111 2714 2712 2713 +2754 111 2717 2715 2716 +2755 111 2720 2718 2719 +2756 111 2723 2721 2722 +2757 111 2726 2724 2725 +2758 111 2729 2727 2728 +2759 111 2732 2730 2731 +2760 111 2735 2733 2734 +2761 111 2738 2736 2737 +2762 111 2741 2739 2740 +2763 111 2744 2742 2743 +2764 111 2747 2745 2746 +2765 111 2750 2748 2749 +2766 111 2753 2751 2752 +2767 111 2756 2754 2755 +2768 111 2759 2757 2758 +2769 111 2762 2760 2761 +2770 111 2765 2763 2764 +2771 111 2768 2766 2767 +2772 111 2771 2769 2770 +2773 111 2774 2772 2773 +2774 111 2777 2775 2776 +2775 111 2780 2778 2779 +2776 111 2783 2781 2782 +2777 111 2786 2784 2785 +2778 111 2789 2787 2788 +2779 111 2792 2790 2791 +2780 111 2795 2793 2794 +2781 111 2798 2796 2797 +2782 111 2801 2799 2800 +2783 111 2804 2802 2803 +2784 111 2807 2805 2806 +2785 111 2810 2808 2809 +2786 111 2813 2811 2812 +2787 111 2816 2814 2815 +2788 111 2819 2817 2818 +2789 111 2822 2820 2821 +2790 111 2825 2823 2824 +2791 111 2828 2826 2827 +2792 111 2831 2829 2830 +2793 111 2834 2832 2833 +2794 111 2837 2835 2836 +2795 111 2840 2838 2839 +2796 111 2843 2841 2842 +2797 111 2846 2844 2845 +2798 111 2849 2847 2848 +2799 111 2852 2850 2851 +2800 111 2855 2853 2854 +2801 111 2858 2856 2857 +2802 111 2861 2859 2860 +2803 111 2864 2862 2863 +2804 111 2867 2865 2866 +2805 111 2870 2868 2869 +2806 111 2873 2871 2872 +2807 111 2876 2874 2875 +2808 111 2879 2877 2878 +2809 111 2882 2880 2881 +2810 111 2885 2883 2884 +2811 111 2888 2886 2887 +2812 111 2891 2889 2890 +2813 111 2894 2892 2893 +2814 111 2897 2895 2896 +2815 111 2900 2898 2899 +2816 111 2903 2901 2902 +2817 111 2906 2904 2905 +2818 111 2909 2907 2908 +2819 111 2912 2910 2911 +2820 111 2915 2913 2914 +2821 111 2918 2916 2917 +2822 111 2921 2919 2920 +2823 111 2924 2922 2923 +2824 111 2927 2925 2926 +2825 111 2930 2928 2929 +2826 111 2933 2931 2932 +2827 111 2936 2934 2935 +2828 111 2939 2937 2938 +2829 111 2942 2940 2941 +2830 111 2945 2943 2944 +2831 111 2948 2946 2947 +2832 111 2951 2949 2950 +2833 111 2954 2952 2953 +2834 111 2957 2955 2956 +2835 111 2960 2958 2959 +2836 111 2963 2961 2962 +2837 111 2966 2964 2965 +2838 111 2969 2967 2968 +2839 111 2972 2970 2971 +2840 111 2975 2973 2974 +2841 111 2978 2976 2977 +2842 111 2981 2979 2980 +2843 111 2984 2982 2983 +2844 111 2987 2985 2986 +2845 111 2990 2988 2989 +2846 111 2993 2991 2992 +2847 111 2996 2994 2995 +2848 111 2999 2997 2998 +2849 111 3002 3000 3001 +2850 111 3005 3003 3004 +2851 111 3008 3006 3007 +2852 111 3011 3009 3010 +2853 111 3014 3012 3013 +2854 111 3017 3015 3016 +2855 111 3020 3018 3019 +2856 111 3023 3021 3022 +2857 111 3026 3024 3025 +2858 111 3029 3027 3028 +2859 111 3032 3030 3031 +2860 111 3035 3033 3034 +2861 111 3038 3036 3037 +2862 111 3041 3039 3040 +2863 111 3044 3042 3043 +2864 111 3047 3045 3046 +2865 111 3050 3048 3049 +2866 111 3053 3051 3052 +2867 111 3056 3054 3055 +2868 111 3059 3057 3058 +2869 111 3062 3060 3061 +2870 111 3065 3063 3064 +2871 111 3068 3066 3067 +2872 111 3071 3069 3070 +2873 111 3074 3072 3073 +2874 111 3077 3075 3076 +2875 111 3080 3078 3079 +2876 111 3083 3081 3082 +2877 111 3086 3084 3085 +2878 111 3089 3087 3088 +2879 111 3092 3090 3091 +2880 111 3095 3093 3094 +2881 111 3098 3096 3097 +2882 111 3101 3099 3100 +2883 111 3104 3102 3103 +2884 111 3107 3105 3106 +2885 111 3110 3108 3109 +2886 111 3113 3111 3112 +2887 111 3116 3114 3115 +2888 111 3119 3117 3118 +2889 111 3122 3120 3121 +2890 111 3125 3123 3124 +2891 111 3128 3126 3127 +2892 111 3131 3129 3130 +2893 111 3134 3132 3133 +2894 111 3137 3135 3136 +2895 111 3140 3138 3139 +2896 111 3143 3141 3142 +2897 111 3146 3144 3145 +2898 111 3149 3147 3148 +2899 111 3152 3150 3151 +2900 111 3155 3153 3154 +2901 111 3158 3156 3157 +2902 111 3161 3159 3160 +2903 111 3164 3162 3163 +2904 111 3167 3165 3166 +2905 111 3170 3168 3169 +2906 111 3173 3171 3172 +2907 111 3176 3174 3175 +2908 111 3179 3177 3178 +2909 111 3182 3180 3181 +2910 111 3185 3183 3184 +2911 111 3188 3186 3187 +2912 111 3191 3189 3190 +2913 111 3194 3192 3193 +2914 111 3197 3195 3196 +2915 111 3200 3198 3199 +2916 111 3203 3201 3202 +2917 111 3206 3204 3205 +2918 111 3209 3207 3208 +2919 111 3212 3210 3211 +2920 111 3215 3213 3214 +2921 111 3218 3216 3217 +2922 111 3221 3219 3220 +2923 111 3224 3222 3223 +2924 111 3227 3225 3226 +2925 111 3230 3228 3229 +2926 111 3233 3231 3232 +2927 111 3236 3234 3235 +2928 111 3239 3237 3238 +2929 111 3242 3240 3241 +2930 111 3245 3243 3244 +2931 111 3248 3246 3247 +2932 111 3251 3249 3250 +2933 111 3254 3252 3253 +2934 111 3257 3255 3256 +2935 111 3260 3258 3259 +2936 111 3263 3261 3262 +2937 111 3266 3264 3265 +2938 111 3269 3267 3268 +2939 111 3272 3270 3271 +2940 111 3275 3273 3274 +2941 111 3278 3276 3277 +2942 111 3281 3279 3280 +2943 111 3284 3282 3283 +2944 111 3287 3285 3286 +2945 111 3290 3288 3289 +2946 111 3293 3291 3292 +2947 111 3296 3294 3295 +2948 111 3299 3297 3298 +2949 111 3302 3300 3301 +2950 111 3305 3303 3304 +2951 111 3308 3306 3307 +2952 111 3311 3309 3310 +2953 111 3314 3312 3313 +2954 111 3317 3315 3316 +2955 111 3320 3318 3319 +2956 111 3323 3321 3322 +2957 111 3326 3324 3325 +2958 111 3329 3327 3328 +2959 111 3332 3330 3331 +2960 111 3335 3333 3334 +2961 111 3338 3336 3337 +2962 111 3341 3339 3340 +2963 111 3344 3342 3343 +2964 111 3347 3345 3346 +2965 111 3350 3348 3349 +2966 111 3353 3351 3352 +2967 111 3356 3354 3355 +2968 111 3359 3357 3358 +2969 111 3362 3360 3361 +2970 111 3365 3363 3364 +2971 111 3368 3366 3367 +2972 111 3371 3369 3370 +2973 111 3374 3372 3373 +2974 111 3377 3375 3376 +2975 111 3380 3378 3379 +2976 111 3383 3381 3382 +2977 111 3386 3384 3385 +2978 111 3389 3387 3388 +2979 111 3392 3390 3391 +2980 111 3395 3393 3394 +2981 111 3398 3396 3397 +2982 111 3401 3399 3400 +2983 111 3404 3402 3403 +2984 111 3407 3405 3406 +2985 111 3410 3408 3409 +2986 111 3413 3411 3412 +2987 111 3416 3414 3415 +2988 111 3419 3417 3418 +2989 111 3422 3420 3421 +2990 111 3425 3423 3424 +2991 111 3428 3426 3427 +2992 111 3431 3429 3430 +2993 111 3434 3432 3433 +2994 111 3437 3435 3436 +2995 111 3440 3438 3439 +2996 111 3443 3441 3442 +2997 111 3446 3444 3445 +2998 111 3449 3447 3448 +2999 111 3452 3450 3451 +3000 111 3455 3453 3454 +3001 111 3458 3456 3457 +3002 111 3461 3459 3460 +3003 111 3464 3462 3463 +3004 111 3467 3465 3466 +3005 111 3470 3468 3469 +3006 111 3473 3471 3472 +3007 111 3476 3474 3475 +3008 111 3479 3477 3478 +3009 111 3482 3480 3481 +3010 111 3485 3483 3484 +3011 111 3488 3486 3487 +3012 111 3491 3489 3490 +3013 111 3494 3492 3493 +3014 111 3497 3495 3496 +3015 111 3500 3498 3499 +3016 111 3503 3501 3502 +3017 111 3506 3504 3505 +3018 111 3509 3507 3508 +3019 111 3512 3510 3511 +3020 111 3515 3513 3514 +3021 111 3518 3516 3517 +3022 111 3521 3519 3520 +3023 111 3524 3522 3523 +3024 111 3527 3525 3526 +3025 111 3530 3528 3529 +3026 111 3533 3531 3532 +3027 111 3536 3534 3535 +3028 111 3539 3537 3538 +3029 111 3542 3540 3541 +3030 111 3545 3543 3544 +3031 111 3548 3546 3547 +3032 111 3551 3549 3550 +3033 111 3554 3552 3553 +3034 111 3557 3555 3556 +3035 111 3560 3558 3559 +3036 111 3563 3561 3562 +3037 111 3566 3564 3565 +3038 111 3569 3567 3568 +3039 111 3572 3570 3571 +3040 111 3575 3573 3574 +3041 111 3578 3576 3577 +3042 111 3581 3579 3580 +3043 111 3584 3582 3583 +3044 111 3587 3585 3586 +3045 111 3590 3588 3589 +3046 111 3593 3591 3592 +3047 111 3596 3594 3595 +3048 111 3599 3597 3598 +3049 111 3602 3600 3601 +3050 111 3605 3603 3604 +3051 111 3608 3606 3607 +3052 111 3611 3609 3610 +3053 111 3614 3612 3613 +3054 111 3617 3615 3616 +3055 111 3620 3618 3619 +3056 111 3623 3621 3622 +3057 111 3626 3624 3625 +3058 111 3629 3627 3628 +3059 111 3632 3630 3631 +3060 111 3635 3633 3634 +3061 111 3638 3636 3637 +3062 111 3641 3639 3640 +3063 111 3644 3642 3643 +3064 111 3647 3645 3646 +3065 111 3650 3648 3649 +3066 111 3653 3651 3652 +3067 111 3656 3654 3655 +3068 111 3659 3657 3658 +3069 111 3662 3660 3661 +3070 111 3665 3663 3664 +3071 111 3668 3666 3667 +3072 111 3671 3669 3670 +3073 111 3674 3672 3673 +3074 111 3677 3675 3676 +3075 111 3680 3678 3679 +3076 111 3683 3681 3682 +3077 111 3686 3684 3685 +3078 111 3689 3687 3688 +3079 111 3692 3690 3691 +3080 111 3695 3693 3694 +3081 111 3698 3696 3697 +3082 111 3701 3699 3700 +3083 111 3704 3702 3703 +3084 111 3707 3705 3706 +3085 111 3710 3708 3709 +3086 111 3713 3711 3712 +3087 111 3716 3714 3715 +3088 111 3719 3717 3718 +3089 111 3722 3720 3721 +3090 111 3725 3723 3724 +3091 111 3728 3726 3727 +3092 111 3731 3729 3730 +3093 111 3734 3732 3733 +3094 111 3737 3735 3736 +3095 111 3740 3738 3739 +3096 111 3743 3741 3742 +3097 111 3746 3744 3745 +3098 111 3749 3747 3748 +3099 111 3752 3750 3751 +3100 111 3755 3753 3754 +3101 111 3758 3756 3757 +3102 111 3761 3759 3760 +3103 111 3764 3762 3763 +3104 111 3767 3765 3766 +3105 111 3770 3768 3769 +3106 111 3773 3771 3772 +3107 111 3776 3774 3775 +3108 111 3779 3777 3778 +3109 111 3782 3780 3781 +3110 111 3785 3783 3784 +3111 111 3788 3786 3787 +3112 111 3791 3789 3790 +3113 111 3794 3792 3793 +3114 111 3797 3795 3796 +3115 111 3800 3798 3799 +3116 111 3803 3801 3802 +3117 111 3806 3804 3805 +3118 111 3809 3807 3808 +3119 111 3812 3810 3811 +3120 111 3815 3813 3814 +3121 111 3818 3816 3817 +3122 111 3821 3819 3820 +3123 111 3824 3822 3823 +3124 111 3827 3825 3826 +3125 111 3830 3828 3829 +3126 111 3833 3831 3832 +3127 111 3836 3834 3835 +3128 111 3839 3837 3838 +3129 111 3842 3840 3841 +3130 111 3845 3843 3844 +3131 111 3848 3846 3847 +3132 111 3851 3849 3850 +3133 111 3854 3852 3853 +3134 111 3857 3855 3856 +3135 111 3860 3858 3859 +3136 111 3863 3861 3862 +3137 111 3866 3864 3865 +3138 111 3869 3867 3868 +3139 111 3872 3870 3871 +3140 111 3875 3873 3874 +3141 111 3878 3876 3877 +3142 111 3881 3879 3880 +3143 111 3884 3882 3883 +3144 111 3887 3885 3886 +3145 111 3890 3888 3889 +3146 111 3893 3891 3892 +3147 111 3896 3894 3895 +3148 111 3899 3897 3898 +3149 111 3902 3900 3901 +3150 111 3905 3903 3904 +3151 111 3908 3906 3907 +3152 111 3911 3909 3910 +3153 111 3914 3912 3913 +3154 111 3917 3915 3916 +3155 111 3920 3918 3919 +3156 111 3923 3921 3922 +3157 111 3926 3924 3925 +3158 111 3929 3927 3928 +3159 111 3932 3930 3931 +3160 111 3935 3933 3934 +3161 111 3938 3936 3937 +3162 111 3941 3939 3940 +3163 111 3944 3942 3943 +3164 111 3947 3945 3946 +3165 111 3950 3948 3949 +3166 111 3953 3951 3952 +3167 111 3956 3954 3955 +3168 111 3959 3957 3958 +3169 111 3962 3960 3961 +3170 111 3965 3963 3964 +3171 111 3968 3966 3967 +3172 111 3971 3969 3970 +3173 111 3974 3972 3973 +3174 111 3977 3975 3976 +3175 111 3980 3978 3979 +3176 111 3983 3981 3982 +3177 111 3986 3984 3985 +3178 111 3989 3987 3988 +3179 111 3992 3990 3991 +3180 111 3995 3993 3994 +3181 111 3998 3996 3997 +3182 111 4001 3999 4000 +3183 111 4004 4002 4003 +3184 111 4007 4005 4006 +3185 111 4010 4008 4009 +3186 111 4013 4011 4012 +3187 111 4016 4014 4015 +3188 111 4019 4017 4018 +3189 111 4022 4020 4021 +3190 111 4025 4023 4024 +3191 111 4028 4026 4027 +3192 111 4031 4029 4030 +3193 111 4034 4032 4033 +3194 111 4037 4035 4036 +3195 111 4040 4038 4039 +3196 111 4043 4041 4042 +3197 111 4046 4044 4045 +3198 111 4049 4047 4048 +3199 111 4052 4050 4051 +3200 111 4055 4053 4054 +3201 111 4058 4056 4057 +3202 111 4061 4059 4060 +3203 111 4064 4062 4063 +3204 111 4067 4065 4066 +3205 111 4070 4068 4069 +3206 111 4073 4071 4072 +3207 111 4076 4074 4075 +3208 111 4079 4077 4078 +3209 111 4082 4080 4081 +3210 111 4085 4083 4084 +3211 111 4088 4086 4087 +3212 111 4091 4089 4090 +3213 111 4094 4092 4093 +3214 111 4097 4095 4096 +3215 111 4100 4098 4099 +3216 111 4103 4101 4102 +3217 111 4106 4104 4105 +3218 111 4109 4107 4108 +3219 111 4112 4110 4111 +3220 111 4115 4113 4114 +3221 111 4118 4116 4117 +3222 111 4121 4119 4120 +3223 111 4124 4122 4123 +3224 111 4127 4125 4126 +3225 111 4130 4128 4129 +3226 111 4133 4131 4132 +3227 111 4136 4134 4135 +3228 111 4139 4137 4138 +3229 111 4142 4140 4141 +3230 111 4145 4143 4144 +3231 111 4148 4146 4147 +3232 111 4151 4149 4150 +3233 111 4154 4152 4153 +3234 111 4157 4155 4156 +3235 111 4160 4158 4159 +3236 111 4163 4161 4162 +3237 111 4166 4164 4165 +3238 111 4169 4167 4168 +3239 111 4172 4170 4171 +3240 111 4175 4173 4174 +3241 111 4178 4176 4177 +3242 111 4181 4179 4180 +3243 111 4184 4182 4183 +3244 111 4187 4185 4186 +3245 111 4190 4188 4189 +3246 111 4193 4191 4192 +3247 111 4196 4194 4195 +3248 111 4199 4197 4198 +3249 111 4202 4200 4201 +3250 111 4205 4203 4204 +3251 111 4208 4206 4207 +3252 111 4211 4209 4210 +3253 111 4214 4212 4213 +3254 111 4217 4215 4216 +3255 111 4220 4218 4219 +3256 111 4223 4221 4222 +3257 111 4226 4224 4225 +3258 111 4229 4227 4228 +3259 111 4232 4230 4231 +3260 111 4235 4233 4234 +3261 111 4238 4236 4237 +3262 111 4241 4239 4240 +3263 111 4244 4242 4243 +3264 111 4247 4245 4246 +3265 111 4250 4248 4249 +3266 111 4253 4251 4252 +3267 111 4256 4254 4255 +3268 111 4259 4257 4258 +3269 111 4262 4260 4261 +3270 111 4265 4263 4264 +3271 111 4268 4266 4267 +3272 111 4271 4269 4270 +3273 111 4274 4272 4273 +3274 111 4277 4275 4276 +3275 111 4280 4278 4279 +3276 111 4283 4281 4282 +3277 111 4286 4284 4285 +3278 111 4289 4287 4288 +3279 111 4292 4290 4291 +3280 111 4295 4293 4294 +3281 111 4298 4296 4297 +3282 111 4301 4299 4300 +3283 111 4304 4302 4303 +3284 111 4307 4305 4306 +3285 111 4310 4308 4309 +3286 111 4313 4311 4312 +3287 111 4316 4314 4315 +3288 111 4319 4317 4318 +3289 111 4322 4320 4321 +3290 111 4325 4323 4324 +3291 111 4328 4326 4327 +3292 111 4331 4329 4330 +3293 111 4334 4332 4333 +3294 111 4337 4335 4336 +3295 111 4340 4338 4339 +3296 111 4343 4341 4342 +3297 111 4346 4344 4345 +3298 111 4349 4347 4348 +3299 111 4352 4350 4351 +3300 111 4355 4353 4354 +3301 111 4358 4356 4357 +3302 111 4361 4359 4360 +3303 111 4364 4362 4363 +3304 111 4367 4365 4366 +3305 111 4370 4368 4369 +3306 111 4373 4371 4372 +3307 111 4376 4374 4375 +3308 111 4379 4377 4378 +3309 111 4382 4380 4381 +3310 111 4385 4383 4384 +3311 111 4388 4386 4387 +3312 111 4391 4389 4390 +3313 111 4394 4392 4393 +3314 111 4397 4395 4396 +3315 111 4400 4398 4399 +3316 111 4403 4401 4402 +3317 111 4406 4404 4405 +3318 111 4409 4407 4408 +3319 111 4412 4410 4411 +3320 111 4415 4413 4414 +3321 111 4418 4416 4417 +3322 111 4421 4419 4420 +3323 111 4424 4422 4423 +3324 111 4427 4425 4426 +3325 111 4430 4428 4429 +3326 111 4433 4431 4432 +3327 111 4436 4434 4435 +3328 111 4439 4437 4438 +3329 111 4442 4440 4441 +3330 111 4445 4443 4444 +3331 111 4448 4446 4447 +3332 111 4451 4449 4450 +3333 111 4454 4452 4453 +3334 111 4457 4455 4456 +3335 111 4460 4458 4459 +3336 111 4463 4461 4462 +3337 111 4466 4464 4465 +3338 111 4469 4467 4468 +3339 111 4472 4470 4471 +3340 111 4475 4473 4474 +3341 111 4478 4476 4477 +3342 111 4481 4479 4480 +3343 111 4484 4482 4483 +3344 111 4487 4485 4486 +3345 111 4490 4488 4489 +3346 111 4493 4491 4492 +3347 111 4496 4494 4495 +3348 111 4499 4497 4498 +3349 111 4502 4500 4501 +3350 111 4505 4503 4504 +3351 111 4508 4506 4507 +3352 111 4511 4509 4510 +3353 111 4514 4512 4513 +3354 111 4517 4515 4516 +3355 111 4520 4518 4519 +3356 111 4523 4521 4522 +3357 111 4526 4524 4525 +3358 111 4529 4527 4528 +3359 111 4532 4530 4531 +3360 111 4535 4533 4534 +3361 111 4538 4536 4537 +3362 111 4541 4539 4540 +3363 111 4544 4542 4543 +3364 111 4547 4545 4546 +3365 111 4550 4548 4549 +3366 111 4553 4551 4552 +3367 111 4556 4554 4555 +3368 111 4559 4557 4558 +3369 111 4562 4560 4561 +3370 111 4565 4563 4564 +3371 111 4568 4566 4567 +3372 111 4571 4569 4570 +3373 111 4574 4572 4573 +3374 111 4577 4575 4576 +3375 111 4580 4578 4579 +3376 111 4583 4581 4582 +3377 111 4586 4584 4585 +3378 111 4589 4587 4588 +3379 111 4592 4590 4591 +3380 111 4595 4593 4594 +3381 111 4598 4596 4597 +3382 111 4601 4599 4600 +3383 111 4604 4602 4603 +3384 111 4607 4605 4606 +3385 111 4610 4608 4609 +3386 111 4613 4611 4612 +3387 111 4616 4614 4615 +3388 111 4619 4617 4618 +3389 111 4622 4620 4621 +3390 111 4625 4623 4624 +3391 111 4628 4626 4627 +3392 111 4631 4629 4630 +3393 111 4634 4632 4633 +3394 111 4637 4635 4636 +3395 111 4640 4638 4639 +3396 111 4643 4641 4642 +3397 111 4646 4644 4645 +3398 111 4649 4647 4648 +3399 111 4652 4650 4651 +3400 111 4655 4653 4654 +3401 111 4658 4656 4657 +3402 111 4661 4659 4660 +3403 111 4664 4662 4663 +3404 111 4667 4665 4666 +3405 111 4670 4668 4669 +3406 111 4673 4671 4672 +3407 111 4676 4674 4675 +3408 111 4679 4677 4678 +3409 111 4682 4680 4681 +3410 111 4685 4683 4684 +3411 111 4688 4686 4687 +3412 111 4691 4689 4690 +3413 111 4694 4692 4693 +3414 111 4697 4695 4696 +3415 111 4700 4698 4699 +3416 111 4703 4701 4702 +3417 111 4706 4704 4705 +3418 111 4709 4707 4708 +3419 111 4712 4710 4711 +3420 111 4715 4713 4714 +3421 111 4718 4716 4717 +3422 111 4721 4719 4720 +3423 111 4724 4722 4723 +3424 111 4727 4725 4726 +3425 111 4730 4728 4729 +3426 111 4733 4731 4732 +3427 111 4736 4734 4735 +3428 111 4739 4737 4738 +3429 111 4742 4740 4741 +3430 111 4745 4743 4744 +3431 111 4748 4746 4747 +3432 111 4751 4749 4750 +3433 111 4754 4752 4753 +3434 111 4757 4755 4756 +3435 111 4760 4758 4759 +3436 111 4763 4761 4762 +3437 111 4766 4764 4765 +3438 111 4769 4767 4768 +3439 111 4772 4770 4771 +3440 111 4775 4773 4774 +3441 111 4778 4776 4777 +3442 111 4781 4779 4780 +3443 111 4784 4782 4783 +3444 111 4787 4785 4786 +3445 111 4790 4788 4789 +3446 111 4793 4791 4792 +3447 111 4796 4794 4795 +3448 111 4799 4797 4798 +3449 111 4802 4800 4801 +3450 111 4805 4803 4804 +3451 111 4808 4806 4807 +3452 111 4811 4809 4810 +3453 111 4814 4812 4813 +3454 111 4817 4815 4816 +3455 111 4820 4818 4819 +3456 111 4823 4821 4822 +3457 111 4826 4824 4825 +3458 111 4829 4827 4828 +3459 111 4832 4830 4831 +3460 111 4835 4833 4834 +3461 111 4838 4836 4837 +3462 111 4841 4839 4840 +3463 111 4844 4842 4843 +3464 111 4847 4845 4846 +3465 111 4850 4848 4849 +3466 111 4853 4851 4852 +3467 111 4856 4854 4855 +3468 111 4859 4857 4858 +3469 111 4862 4860 4861 +3470 111 4865 4863 4864 +3471 111 4868 4866 4867 +3472 111 4871 4869 4870 +3473 111 4874 4872 4873 +3474 111 4877 4875 4876 +3475 111 4880 4878 4879 +3476 111 4883 4881 4882 +3477 111 4886 4884 4885 +3478 111 4889 4887 4888 +3479 111 4892 4890 4891 +3480 111 4895 4893 4894 +3481 111 4898 4896 4897 +3482 111 4901 4899 4900 +3483 111 4904 4902 4903 +3484 111 4907 4905 4906 +3485 111 4910 4908 4909 +3486 111 4913 4911 4912 +3487 111 4916 4914 4915 +3488 111 4919 4917 4918 +3489 111 4922 4920 4921 +3490 111 4925 4923 4924 +3491 111 4928 4926 4927 +3492 111 4931 4929 4930 +3493 111 4934 4932 4933 +3494 111 4937 4935 4936 +3495 111 4940 4938 4939 +3496 111 4943 4941 4942 +3497 111 4946 4944 4945 +3498 111 4949 4947 4948 +3499 111 4952 4950 4951 +3500 111 4955 4953 4954 +3501 111 4958 4956 4957 +3502 111 4961 4959 4960 +3503 111 4964 4962 4963 +3504 111 4967 4965 4966 +3505 111 4970 4968 4969 +3506 111 4973 4971 4972 +3507 111 4976 4974 4975 +3508 111 4979 4977 4978 +3509 111 4982 4980 4981 +3510 111 4985 4983 4984 +3511 111 4988 4986 4987 +3512 111 4991 4989 4990 +3513 111 4994 4992 4993 +3514 111 4997 4995 4996 +3515 111 5000 4998 4999 +3516 111 5003 5001 5002 +3517 111 5006 5004 5005 +3518 111 5009 5007 5008 +3519 111 5012 5010 5011 +3520 111 5015 5013 5014 +3521 111 5018 5016 5017 +3522 111 5021 5019 5020 +3523 111 5024 5022 5023 +3524 111 5027 5025 5026 +3525 111 5030 5028 5029 +3526 111 5033 5031 5032 +3527 111 5036 5034 5035 +3528 111 5039 5037 5038 +3529 111 5042 5040 5041 +3530 111 5045 5043 5044 +3531 111 5048 5046 5047 +3532 111 5051 5049 5050 +3533 111 5054 5052 5053 +3534 111 5057 5055 5056 +3535 111 5060 5058 5059 +3536 111 5063 5061 5062 +3537 111 5066 5064 5065 +3538 111 5069 5067 5068 +3539 111 5072 5070 5071 +3540 111 5075 5073 5074 +3541 111 5078 5076 5077 +3542 111 5081 5079 5080 +3543 111 5084 5082 5083 +3544 111 5087 5085 5086 +3545 111 5090 5088 5089 +3546 111 5093 5091 5092 +3547 111 5096 5094 5095 +3548 111 5099 5097 5098 +3549 111 5102 5100 5101 +3550 111 5105 5103 5104 +3551 111 5108 5106 5107 +3552 111 5111 5109 5110 +3553 111 5114 5112 5113 +3554 111 5117 5115 5116 +3555 111 5120 5118 5119 +3556 111 5123 5121 5122 +3557 111 5126 5124 5125 +3558 111 5129 5127 5128 +3559 111 5132 5130 5131 +3560 111 5135 5133 5134 +3561 111 5138 5136 5137 +3562 111 5141 5139 5140 +3563 111 5144 5142 5143 +3564 111 5147 5145 5146 +3565 111 5150 5148 5149 +3566 111 5153 5151 5152 +3567 111 5156 5154 5155 +3568 111 5159 5157 5158 +3569 111 5162 5160 5161 +3570 111 5165 5163 5164 +3571 111 5168 5166 5167 +3572 111 5171 5169 5170 +3573 111 5174 5172 5173 +3574 111 5177 5175 5176 +3575 111 5180 5178 5179 +3576 111 5183 5181 5182 +3577 111 5186 5184 5185 +3578 111 5189 5187 5188 +3579 111 5192 5190 5191 +3580 111 5195 5193 5194 +3581 111 5198 5196 5197 +3582 111 5201 5199 5200 +3583 111 5204 5202 5203 +3584 111 5207 5205 5206 +3585 111 5210 5208 5209 +3586 111 5213 5211 5212 +3587 111 5216 5214 5215 +3588 111 5219 5217 5218 +3589 111 5222 5220 5221 +3590 111 5225 5223 5224 +3591 111 5228 5226 5227 +3592 111 5231 5229 5230 +3593 111 5234 5232 5233 +3594 111 5237 5235 5236 +3595 111 5240 5238 5239 +3596 111 5243 5241 5242 +3597 111 5246 5244 5245 +3598 111 5249 5247 5248 +3599 111 5252 5250 5251 +3600 111 5255 5253 5254 +3601 111 5258 5256 5257 +3602 111 5261 5259 5260 +3603 111 5264 5262 5263 +3604 111 5267 5265 5266 +3605 111 5270 5268 5269 +3606 111 5273 5271 5272 +3607 111 5276 5274 5275 +3608 111 5279 5277 5278 +3609 111 5282 5280 5281 +3610 111 5285 5283 5284 +3611 111 5288 5286 5287 +3612 111 5291 5289 5290 +3613 111 5294 5292 5293 +3614 111 5297 5295 5296 +3615 111 5300 5298 5299 +3616 111 5303 5301 5302 +3617 111 5306 5304 5305 +3618 111 5309 5307 5308 +3619 111 5312 5310 5311 +3620 111 5315 5313 5314 +3621 111 5318 5316 5317 +3622 111 5321 5319 5320 +3623 111 5324 5322 5323 +3624 111 5327 5325 5326 +3625 111 5330 5328 5329 +3626 111 5333 5331 5332 +3627 111 5336 5334 5335 +3628 111 5339 5337 5338 +3629 111 5342 5340 5341 +3630 111 5345 5343 5344 +3631 111 5348 5346 5347 +3632 111 5351 5349 5350 +3633 111 5354 5352 5353 +3634 111 5357 5355 5356 +3635 111 5360 5358 5359 +3636 111 5363 5361 5362 +3637 111 5366 5364 5365 +3638 111 5369 5367 5368 +3639 111 5372 5370 5371 +3640 111 5375 5373 5374 +3641 111 5378 5376 5377 +3642 111 5381 5379 5380 +3643 111 5384 5382 5383 +3644 111 5387 5385 5386 +3645 111 5390 5388 5389 +3646 111 5393 5391 5392 +3647 111 5396 5394 5395 +3648 111 5399 5397 5398 +3649 111 5402 5400 5401 +3650 111 5405 5403 5404 +3651 111 5408 5406 5407 +3652 111 5411 5409 5410 +3653 111 5414 5412 5413 +3654 111 5417 5415 5416 +3655 111 5420 5418 5419 +3656 111 5423 5421 5422 +3657 111 5426 5424 5425 +3658 111 5429 5427 5428 +3659 111 5432 5430 5431 +3660 111 5435 5433 5434 +3661 111 5438 5436 5437 +3662 111 5441 5439 5440 +3663 111 5444 5442 5443 +3664 111 5447 5445 5446 +3665 111 5450 5448 5449 +3666 111 5453 5451 5452 +3667 111 5456 5454 5455 +3668 111 5459 5457 5458 +3669 111 5462 5460 5461 +3670 111 5465 5463 5464 +3671 111 5468 5466 5467 +3672 111 5471 5469 5470 +3673 111 5474 5472 5473 +3674 111 5477 5475 5476 +3675 111 5480 5478 5479 +3676 111 5483 5481 5482 +3677 111 5486 5484 5485 +3678 111 5489 5487 5488 +3679 111 5492 5490 5491 +3680 111 5495 5493 5494 +3681 111 5498 5496 5497 +3682 111 5501 5499 5500 +3683 111 5504 5502 5503 +3684 111 5507 5505 5506 +3685 111 5510 5508 5509 +3686 111 5513 5511 5512 +3687 111 5516 5514 5515 +3688 111 5519 5517 5518 +3689 111 5522 5520 5521 +3690 111 5525 5523 5524 +3691 111 5528 5526 5527 +3692 111 5531 5529 5530 +3693 111 5534 5532 5533 +3694 111 5537 5535 5536 +3695 111 5540 5538 5539 +3696 111 5543 5541 5542 +3697 111 5546 5544 5545 +3698 111 5549 5547 5548 +3699 111 5552 5550 5551 +3700 111 5555 5553 5554 +3701 111 5558 5556 5557 +3702 111 5561 5559 5560 +3703 111 5564 5562 5563 +3704 111 5567 5565 5566 +3705 111 5570 5568 5569 +3706 111 5573 5571 5572 +3707 111 5576 5574 5575 +3708 111 5579 5577 5578 +3709 111 5582 5580 5581 +3710 111 5585 5583 5584 +3711 111 5588 5586 5587 +3712 111 5591 5589 5590 +3713 111 5594 5592 5593 +3714 111 5597 5595 5596 +3715 111 5600 5598 5599 +3716 111 5603 5601 5602 +3717 111 5606 5604 5605 +3718 111 5609 5607 5608 +3719 111 5612 5610 5611 +3720 111 5615 5613 5614 +3721 111 5618 5616 5617 +3722 111 5621 5619 5620 +3723 111 5624 5622 5623 +3724 111 5627 5625 5626 +3725 111 5630 5628 5629 +3726 111 5633 5631 5632 +3727 111 5636 5634 5635 +3728 111 5639 5637 5638 +3729 111 5642 5640 5641 +3730 111 5645 5643 5644 +3731 111 5648 5646 5647 +3732 111 5651 5649 5650 +3733 111 5654 5652 5653 +3734 111 5657 5655 5656 +3735 111 5660 5658 5659 +3736 111 5663 5661 5662 +3737 111 5666 5664 5665 +3738 111 5669 5667 5668 +3739 111 5672 5670 5671 +3740 111 5675 5673 5674 +3741 111 5678 5676 5677 +3742 111 5681 5679 5680 +3743 111 5684 5682 5683 +3744 111 5687 5685 5686 +3745 111 5690 5688 5689 +3746 111 5693 5691 5692 +3747 111 5696 5694 5695 +3748 111 5699 5697 5698 +3749 111 5702 5700 5701 +3750 111 5705 5703 5704 +3751 111 5708 5706 5707 +3752 111 5711 5709 5710 +3753 111 5714 5712 5713 +3754 111 5717 5715 5716 +3755 111 5720 5718 5719 +3756 111 5723 5721 5722 +3757 111 5726 5724 5725 +3758 111 5729 5727 5728 +3759 111 5732 5730 5731 +3760 111 5735 5733 5734 +3761 111 5738 5736 5737 +3762 111 5741 5739 5740 +3763 111 5744 5742 5743 +3764 111 5747 5745 5746 +3765 111 5750 5748 5749 +3766 111 5753 5751 5752 +3767 111 5756 5754 5755 +3768 111 5759 5757 5758 +3769 111 5762 5760 5761 +3770 111 5765 5763 5764 +3771 111 5768 5766 5767 +3772 111 5771 5769 5770 +3773 111 5774 5772 5773 +3774 111 5777 5775 5776 +3775 111 5780 5778 5779 +3776 111 5783 5781 5782 +3777 111 5786 5784 5785 +3778 111 5789 5787 5788 +3779 111 5792 5790 5791 +3780 111 5795 5793 5794 +3781 111 5798 5796 5797 +3782 111 5801 5799 5800 +3783 111 5804 5802 5803 +3784 111 5807 5805 5806 +3785 111 5810 5808 5809 +3786 111 5813 5811 5812 +3787 111 5816 5814 5815 +3788 111 5819 5817 5818 +3789 111 5822 5820 5821 +3790 111 5825 5823 5824 +3791 111 5828 5826 5827 +3792 111 5831 5829 5830 +3793 111 5834 5832 5833 +3794 111 5837 5835 5836 +3795 111 5840 5838 5839 +3796 111 5843 5841 5842 +3797 111 5846 5844 5845 +3798 111 5849 5847 5848 +3799 111 5852 5850 5851 +3800 111 5855 5853 5854 +3801 111 5858 5856 5857 +3802 111 5861 5859 5860 +3803 111 5864 5862 5863 +3804 111 5867 5865 5866 +3805 111 5870 5868 5869 +3806 111 5873 5871 5872 +3807 111 5876 5874 5875 +3808 111 5879 5877 5878 +3809 111 5882 5880 5881 +3810 111 5885 5883 5884 +3811 111 5888 5886 5887 +3812 111 5891 5889 5890 +3813 111 5894 5892 5893 +3814 111 5897 5895 5896 +3815 111 5900 5898 5899 +3816 111 5903 5901 5902 +3817 111 5906 5904 5905 +3818 111 5909 5907 5908 +3819 111 5912 5910 5911 +3820 111 5915 5913 5914 +3821 111 5918 5916 5917 +3822 111 5921 5919 5920 +3823 111 5924 5922 5923 +3824 111 5927 5925 5926 +3825 111 5930 5928 5929 +3826 111 5933 5931 5932 +3827 111 5936 5934 5935 +3828 111 5939 5937 5938 +3829 111 5942 5940 5941 +3830 111 5945 5943 5944 +3831 111 5948 5946 5947 +3832 111 5951 5949 5950 +3833 111 5954 5952 5953 +3834 111 5957 5955 5956 +3835 111 5960 5958 5959 +3836 111 5963 5961 5962 +3837 111 5966 5964 5965 +3838 111 5969 5967 5968 +3839 111 5972 5970 5971 +3840 111 5975 5973 5974 +3841 111 5978 5976 5977 +3842 111 5981 5979 5980 +3843 111 5984 5982 5983 +3844 111 5987 5985 5986 +3845 111 5990 5988 5989 +3846 111 5993 5991 5992 +3847 111 5996 5994 5995 +3848 111 5999 5997 5998 +3849 111 6002 6000 6001 +3850 111 6005 6003 6004 +3851 111 6008 6006 6007 +3852 111 6011 6009 6010 +3853 111 6014 6012 6013 +3854 111 6017 6015 6016 +3855 111 6020 6018 6019 +3856 111 6023 6021 6022 +3857 111 6026 6024 6025 +3858 111 6029 6027 6028 +3859 111 6032 6030 6031 +3860 111 6035 6033 6034 +3861 111 6038 6036 6037 +3862 111 6041 6039 6040 +3863 111 6044 6042 6043 +3864 111 6047 6045 6046 +3865 111 6050 6048 6049 +3866 111 6053 6051 6052 +3867 111 6056 6054 6055 +3868 111 6059 6057 6058 +3869 111 6062 6060 6061 +3870 111 6065 6063 6064 +3871 111 6068 6066 6067 +3872 111 6071 6069 6070 +3873 111 6074 6072 6073 +3874 111 6077 6075 6076 +3875 111 6080 6078 6079 +3876 111 6083 6081 6082 +3877 111 6086 6084 6085 +3878 111 6089 6087 6088 +3879 111 6092 6090 6091 +3880 111 6095 6093 6094 +3881 111 6098 6096 6097 +3882 111 6101 6099 6100 +3883 111 6104 6102 6103 +3884 111 6107 6105 6106 +3885 111 6110 6108 6109 +3886 111 6113 6111 6112 +3887 111 6116 6114 6115 +3888 111 6119 6117 6118 +3889 111 6122 6120 6121 +3890 111 6125 6123 6124 +3891 111 6128 6126 6127 +3892 111 6131 6129 6130 +3893 111 6134 6132 6133 +3894 111 6137 6135 6136 +3895 111 6140 6138 6139 +3896 111 6143 6141 6142 +3897 111 6146 6144 6145 +3898 111 6149 6147 6148 +3899 111 6152 6150 6151 +3900 111 6155 6153 6154 +3901 111 6158 6156 6157 +3902 111 6161 6159 6160 +3903 111 6164 6162 6163 +3904 111 6167 6165 6166 +3905 111 6170 6168 6169 +3906 111 6173 6171 6172 +3907 111 6176 6174 6175 +3908 111 6179 6177 6178 +3909 111 6182 6180 6181 +3910 111 6185 6183 6184 +3911 111 6188 6186 6187 +3912 111 6191 6189 6190 +3913 111 6194 6192 6193 +3914 111 6197 6195 6196 +3915 111 6200 6198 6199 +3916 111 6203 6201 6202 +3917 111 6206 6204 6205 +3918 111 6209 6207 6208 +3919 111 6212 6210 6211 +3920 111 6215 6213 6214 +3921 111 6218 6216 6217 +3922 111 6221 6219 6220 +3923 111 6224 6222 6223 +3924 111 6227 6225 6226 +3925 111 6230 6228 6229 +3926 111 6233 6231 6232 +3927 111 6236 6234 6235 +3928 111 6239 6237 6238 +3929 111 6242 6240 6241 +3930 111 6245 6243 6244 +3931 111 6248 6246 6247 +3932 111 6251 6249 6250 +3933 111 6254 6252 6253 +3934 111 6257 6255 6256 +3935 111 6260 6258 6259 +3936 111 6263 6261 6262 +3937 111 6266 6264 6265 +3938 111 6269 6267 6268 +3939 111 6272 6270 6271 +3940 111 6275 6273 6274 +3941 111 6278 6276 6277 +3942 111 6281 6279 6280 +3943 111 6284 6282 6283 +3944 111 6287 6285 6286 +3945 111 6290 6288 6289 +3946 111 6293 6291 6292 +3947 111 6296 6294 6295 +3948 111 6299 6297 6298 +3949 111 6302 6300 6301 +3950 111 6305 6303 6304 +3951 111 6308 6306 6307 +3952 111 6311 6309 6310 +3953 111 6314 6312 6313 +3954 111 6317 6315 6316 +3955 111 6320 6318 6319 +3956 111 6323 6321 6322 +3957 111 6326 6324 6325 +3958 111 6329 6327 6328 +3959 111 6332 6330 6331 +3960 111 6335 6333 6334 +3961 111 6338 6336 6337 +3962 111 6341 6339 6340 +3963 111 6344 6342 6343 +3964 111 6347 6345 6346 +3965 111 6350 6348 6349 +3966 111 6353 6351 6352 +3967 111 6356 6354 6355 +3968 111 6359 6357 6358 +3969 111 6362 6360 6361 +3970 111 6365 6363 6364 +3971 111 6368 6366 6367 +3972 111 6371 6369 6370 +3973 111 6374 6372 6373 +3974 111 6377 6375 6376 +3975 111 6380 6378 6379 +3976 111 6383 6381 6382 +3977 111 6386 6384 6385 +3978 111 6389 6387 6388 +3979 111 6392 6390 6391 +3980 111 6395 6393 6394 +3981 111 6398 6396 6397 +3982 111 6401 6399 6400 +3983 111 6404 6402 6403 +3984 111 6407 6405 6406 +3985 111 6410 6408 6409 +3986 111 6413 6411 6412 +3987 111 6416 6414 6415 +3988 111 6419 6417 6418 +3989 111 6422 6420 6421 +3990 111 6425 6423 6424 +3991 111 6428 6426 6427 +3992 111 6431 6429 6430 +3993 111 6434 6432 6433 +3994 111 6437 6435 6436 +3995 111 6440 6438 6439 +3996 111 6443 6441 6442 +3997 111 6446 6444 6445 +3998 111 6449 6447 6448 +3999 111 6452 6450 6451 +4000 111 6455 6453 6454 +4001 111 6458 6456 6457 +4002 111 6461 6459 6460 +4003 111 6464 6462 6463 +4004 111 6467 6465 6466 +4005 111 6470 6468 6469 +4006 111 6473 6471 6472 +4007 111 6476 6474 6475 +4008 111 6479 6477 6478 +4009 111 6482 6480 6481 +4010 111 6485 6483 6484 +4011 111 6488 6486 6487 +4012 111 6491 6489 6490 +4013 111 6494 6492 6493 +4014 111 6497 6495 6496 +4015 111 6500 6498 6499 +4016 111 6503 6501 6502 +4017 111 6506 6504 6505 +4018 111 6509 6507 6508 +4019 111 6512 6510 6511 +4020 111 6515 6513 6514 +4021 111 6518 6516 6517 +4022 111 6521 6519 6520 +4023 111 6524 6522 6523 +4024 111 6527 6525 6526 +4025 111 6530 6528 6529 +4026 111 6533 6531 6532 +4027 111 6536 6534 6535 +4028 111 6539 6537 6538 +4029 111 6542 6540 6541 +4030 111 6545 6543 6544 +4031 111 6548 6546 6547 +4032 111 6551 6549 6550 +4033 111 6554 6552 6553 +4034 111 6557 6555 6556 +4035 111 6560 6558 6559 +4036 111 6563 6561 6562 +4037 111 6566 6564 6565 +4038 111 6569 6567 6568 +4039 111 6572 6570 6571 +4040 111 6575 6573 6574 +4041 111 6578 6576 6577 +4042 111 6581 6579 6580 +4043 111 6584 6582 6583 +4044 111 6587 6585 6586 +4045 111 6590 6588 6589 +4046 111 6593 6591 6592 +4047 111 6596 6594 6595 +4048 111 6599 6597 6598 +4049 111 6602 6600 6601 +4050 111 6605 6603 6604 +4051 111 6608 6606 6607 +4052 111 6611 6609 6610 +4053 111 6614 6612 6613 +4054 111 6617 6615 6616 +4055 111 6620 6618 6619 +4056 111 6623 6621 6622 +4057 111 6626 6624 6625 +4058 111 6629 6627 6628 +4059 111 6632 6630 6631 +4060 111 6635 6633 6634 +4061 111 6638 6636 6637 +4062 111 6641 6639 6640 +4063 111 6644 6642 6643 +4064 111 6647 6645 6646 +4065 111 6650 6648 6649 +4066 111 6653 6651 6652 +4067 111 6656 6654 6655 +4068 111 6659 6657 6658 +4069 111 6662 6660 6661 +4070 111 6665 6663 6664 +4071 111 6668 6666 6667 +4072 111 6671 6669 6670 +4073 111 6674 6672 6673 +4074 111 6677 6675 6676 +4075 111 6680 6678 6679 +4076 111 6683 6681 6682 +4077 111 6686 6684 6685 +4078 111 6689 6687 6688 +4079 111 6692 6690 6691 +4080 111 6695 6693 6694 +4081 111 6698 6696 6697 +4082 111 6701 6699 6700 +4083 111 6704 6702 6703 +4084 111 6707 6705 6706 +4085 111 6710 6708 6709 +4086 111 6713 6711 6712 +4087 111 6716 6714 6715 +4088 111 6719 6717 6718 +4089 111 6722 6720 6721 +4090 111 6725 6723 6724 +4091 111 6728 6726 6727 +4092 111 6731 6729 6730 +4093 111 6734 6732 6733 +4094 111 6737 6735 6736 +4095 111 6740 6738 6739 +4096 111 6743 6741 6742 +4097 111 6746 6744 6745 +4098 111 6749 6747 6748 +4099 111 6752 6750 6751 +4100 111 6755 6753 6754 +4101 111 6758 6756 6757 +4102 111 6761 6759 6760 +4103 111 6764 6762 6763 +4104 111 6767 6765 6766 +4105 111 6770 6768 6769 +4106 111 6773 6771 6772 +4107 111 6776 6774 6775 +4108 111 6779 6777 6778 +4109 111 6782 6780 6781 +4110 111 6785 6783 6784 +4111 111 6788 6786 6787 +4112 111 6791 6789 6790 +4113 111 6794 6792 6793 +4114 111 6797 6795 6796 +4115 111 6800 6798 6799 +4116 111 6803 6801 6802 +4117 111 6806 6804 6805 +4118 111 6809 6807 6808 +4119 111 6812 6810 6811 +4120 111 6815 6813 6814 +4121 111 6818 6816 6817 +4122 111 6821 6819 6820 +4123 111 6824 6822 6823 +4124 111 6827 6825 6826 +4125 111 6830 6828 6829 +4126 111 6833 6831 6832 +4127 111 6836 6834 6835 +4128 111 6839 6837 6838 +4129 111 6842 6840 6841 +4130 111 6845 6843 6844 +4131 111 6848 6846 6847 +4132 111 6851 6849 6850 +4133 111 6854 6852 6853 +4134 111 6857 6855 6856 +4135 111 6860 6858 6859 +4136 111 6863 6861 6862 +4137 111 6866 6864 6865 +4138 111 6869 6867 6868 +4139 111 6872 6870 6871 +4140 111 6875 6873 6874 +4141 111 6878 6876 6877 +4142 111 6881 6879 6880 +4143 111 6884 6882 6883 +4144 111 6887 6885 6886 +4145 111 6890 6888 6889 +4146 111 6893 6891 6892 +4147 111 6896 6894 6895 +4148 111 6899 6897 6898 +4149 111 6902 6900 6901 +4150 111 6905 6903 6904 +4151 111 6908 6906 6907 +4152 111 6911 6909 6910 +4153 111 6914 6912 6913 +4154 111 6917 6915 6916 +4155 111 6920 6918 6919 +4156 111 6923 6921 6922 +4157 111 6926 6924 6925 +4158 111 6929 6927 6928 +4159 111 6932 6930 6931 +4160 111 6935 6933 6934 +4161 111 6938 6936 6937 +4162 111 6941 6939 6940 +4163 111 6944 6942 6943 +4164 111 6947 6945 6946 +4165 111 6950 6948 6949 +4166 111 6953 6951 6952 +4167 111 6956 6954 6955 +4168 111 6959 6957 6958 +4169 111 6962 6960 6961 +4170 111 6965 6963 6964 +4171 111 6968 6966 6967 +4172 111 6971 6969 6970 +4173 111 6974 6972 6973 +4174 111 6977 6975 6976 +4175 111 6980 6978 6979 +4176 111 6983 6981 6982 +4177 111 6986 6984 6985 +4178 111 6989 6987 6988 +4179 111 6992 6990 6991 +4180 111 6995 6993 6994 +4181 111 6998 6996 6997 +4182 111 7001 6999 7000 +4183 111 7004 7002 7003 +4184 111 7007 7005 7006 +4185 111 7010 7008 7009 +4186 111 7013 7011 7012 +4187 111 7016 7014 7015 +4188 111 7019 7017 7018 +4189 111 7022 7020 7021 +4190 111 7025 7023 7024 +4191 111 7028 7026 7027 +4192 111 7031 7029 7030 +4193 111 7034 7032 7033 +4194 111 7037 7035 7036 +4195 111 7040 7038 7039 +4196 111 7043 7041 7042 +4197 111 7046 7044 7045 +4198 111 7049 7047 7048 +4199 111 7052 7050 7051 +4200 111 7055 7053 7054 +4201 111 7058 7056 7057 +4202 111 7061 7059 7060 +4203 111 7064 7062 7063 +4204 111 7067 7065 7066 +4205 111 7070 7068 7069 +4206 111 7073 7071 7072 +4207 111 7076 7074 7075 +4208 111 7079 7077 7078 +4209 111 7082 7080 7081 +4210 111 7085 7083 7084 +4211 111 7088 7086 7087 +4212 111 7091 7089 7090 +4213 111 7094 7092 7093 +4214 111 7097 7095 7096 +4215 111 7100 7098 7099 +4216 111 7103 7101 7102 +4217 111 7106 7104 7105 +4218 111 7109 7107 7108 +4219 111 7112 7110 7111 +4220 111 7115 7113 7114 +4221 111 7118 7116 7117 +4222 111 7121 7119 7120 +4223 111 7124 7122 7123 +4224 111 7127 7125 7126 +4225 111 7130 7128 7129 +4226 111 7133 7131 7132 +4227 111 7136 7134 7135 +4228 111 7139 7137 7138 +4229 111 7142 7140 7141 +4230 111 7145 7143 7144 +4231 111 7148 7146 7147 +4232 111 7151 7149 7150 +4233 111 7154 7152 7153 +4234 111 7157 7155 7156 +4235 111 7160 7158 7159 +4236 111 7163 7161 7162 +4237 111 7166 7164 7165 +4238 111 7169 7167 7168 +4239 111 7172 7170 7171 +4240 111 7175 7173 7174 +4241 111 7178 7176 7177 +4242 111 7181 7179 7180 +4243 111 7184 7182 7183 +4244 111 7187 7185 7186 +4245 111 7190 7188 7189 +4246 111 7193 7191 7192 +4247 111 7196 7194 7195 +4248 111 7199 7197 7198 +4249 111 7202 7200 7201 +4250 111 7205 7203 7204 +4251 111 7208 7206 7207 +4252 111 7211 7209 7210 +4253 111 7214 7212 7213 +4254 111 7217 7215 7216 +4255 111 7220 7218 7219 +4256 111 7223 7221 7222 +4257 111 7226 7224 7225 +4258 111 7229 7227 7228 +4259 111 7232 7230 7231 +4260 111 7235 7233 7234 +4261 111 7238 7236 7237 +4262 111 7241 7239 7240 +4263 111 7244 7242 7243 +4264 111 7247 7245 7246 +4265 111 7250 7248 7249 +4266 111 7253 7251 7252 +4267 111 7256 7254 7255 +4268 111 7259 7257 7258 +4269 111 7262 7260 7261 +4270 111 7265 7263 7264 +4271 111 7268 7266 7267 +4272 111 7271 7269 7270 +4273 111 7274 7272 7273 +4274 111 7277 7275 7276 +4275 111 7280 7278 7279 +4276 111 7283 7281 7282 +4277 111 7286 7284 7285 +4278 111 7289 7287 7288 +4279 111 7292 7290 7291 +4280 111 7295 7293 7294 +4281 111 7298 7296 7297 +4282 111 7301 7299 7300 +4283 111 7304 7302 7303 +4284 111 7307 7305 7306 +4285 111 7310 7308 7309 +4286 111 7313 7311 7312 +4287 111 7316 7314 7315 +4288 111 7319 7317 7318 +4289 111 7322 7320 7321 +4290 111 7325 7323 7324 +4291 111 7328 7326 7327 +4292 111 7331 7329 7330 +4293 111 7334 7332 7333 +4294 111 7337 7335 7336 +4295 111 7340 7338 7339 +4296 111 7343 7341 7342 +4297 111 7346 7344 7345 +4298 111 7349 7347 7348 +4299 111 7352 7350 7351 +4300 111 7355 7353 7354 +4301 111 7358 7356 7357 +4302 111 7361 7359 7360 +4303 111 7364 7362 7363 +4304 111 7367 7365 7366 +4305 111 7370 7368 7369 +4306 111 7373 7371 7372 +4307 111 7376 7374 7375 +4308 111 7379 7377 7378 +4309 111 7382 7380 7381 +4310 111 7385 7383 7384 +4311 111 7388 7386 7387 +4312 111 7391 7389 7390 +4313 111 7394 7392 7393 +4314 111 7397 7395 7396 +4315 111 7400 7398 7399 +4316 111 7403 7401 7402 +4317 111 7406 7404 7405 +4318 111 7409 7407 7408 +4319 111 7412 7410 7411 +4320 111 7415 7413 7414 +4321 111 7418 7416 7417 +4322 111 7421 7419 7420 +4323 111 7424 7422 7423 +4324 111 7427 7425 7426 +4325 111 7430 7428 7429 +4326 111 7433 7431 7432 +4327 111 7436 7434 7435 +4328 111 7439 7437 7438 +4329 111 7442 7440 7441 +4330 111 7445 7443 7444 +4331 111 7448 7446 7447 +4332 111 7451 7449 7450 +4333 111 7454 7452 7453 +4334 111 7457 7455 7456 +4335 111 7460 7458 7459 +4336 111 7463 7461 7462 +4337 111 7466 7464 7465 +4338 111 7469 7467 7468 +4339 111 7472 7470 7471 +4340 111 7475 7473 7474 +4341 111 7478 7476 7477 +4342 111 7481 7479 7480 +4343 111 7484 7482 7483 +4344 111 7487 7485 7486 +4345 111 7490 7488 7489 +4346 111 7493 7491 7492 +4347 111 7496 7494 7495 +4348 111 7499 7497 7498 +4349 111 7502 7500 7501 +4350 111 7505 7503 7504 +4351 111 7508 7506 7507 +4352 111 7511 7509 7510 +4353 111 7514 7512 7513 +4354 111 7517 7515 7516 +4355 111 7520 7518 7519 +4356 111 7523 7521 7522 +4357 111 7526 7524 7525 +4358 111 7529 7527 7528 +4359 111 7532 7530 7531 +4360 111 7535 7533 7534 +4361 111 7538 7536 7537 +4362 111 7541 7539 7540 +4363 111 7544 7542 7543 +4364 111 7547 7545 7546 +4365 111 7550 7548 7549 +4366 111 7553 7551 7552 +4367 111 7556 7554 7555 +4368 111 7559 7557 7558 +4369 111 7562 7560 7561 +4370 111 7565 7563 7564 +4371 111 7568 7566 7567 +4372 111 7571 7569 7570 +4373 111 7574 7572 7573 +4374 111 7577 7575 7576 +4375 111 7580 7578 7579 +4376 111 7583 7581 7582 +4377 111 7586 7584 7585 +4378 111 7589 7587 7588 +4379 111 7592 7590 7591 +4380 111 7595 7593 7594 +4381 111 7598 7596 7597 +4382 111 7601 7599 7600 +4383 111 7604 7602 7603 +4384 111 7607 7605 7606 +4385 111 7610 7608 7609 +4386 111 7613 7611 7612 +4387 111 7616 7614 7615 +4388 111 7619 7617 7618 +4389 111 7622 7620 7621 +4390 111 7625 7623 7624 +4391 111 7628 7626 7627 +4392 111 7631 7629 7630 +4393 111 7634 7632 7633 +4394 111 7637 7635 7636 +4395 111 7640 7638 7639 +4396 111 7643 7641 7642 +4397 111 7646 7644 7645 +4398 111 7649 7647 7648 +4399 111 7652 7650 7651 +4400 111 7655 7653 7654 +4401 111 7658 7656 7657 +4402 111 7661 7659 7660 +4403 111 7664 7662 7663 +4404 111 7667 7665 7666 +4405 111 7670 7668 7669 +4406 111 7673 7671 7672 +4407 111 7676 7674 7675 +4408 111 7679 7677 7678 +4409 111 7682 7680 7681 +4410 111 7685 7683 7684 +4411 111 7688 7686 7687 +4412 111 7691 7689 7690 +4413 111 7694 7692 7693 +4414 111 7697 7695 7696 +4415 111 7700 7698 7699 +4416 111 7703 7701 7702 +4417 111 7706 7704 7705 +4418 111 7709 7707 7708 +4419 111 7712 7710 7711 +4420 111 7715 7713 7714 +4421 111 7718 7716 7717 +4422 111 7721 7719 7720 +4423 111 7724 7722 7723 +4424 111 7727 7725 7726 +4425 111 7730 7728 7729 +4426 111 7733 7731 7732 +4427 111 7736 7734 7735 +4428 111 7739 7737 7738 +4429 111 7742 7740 7741 +4430 111 7745 7743 7744 +4431 111 7748 7746 7747 +4432 111 7751 7749 7750 +4433 111 7754 7752 7753 +4434 111 7757 7755 7756 +4435 111 7760 7758 7759 +4436 111 7763 7761 7762 +4437 111 7766 7764 7765 +4438 111 7769 7767 7768 +4439 111 7772 7770 7771 +4440 111 7775 7773 7774 +4441 111 7778 7776 7777 +4442 111 7781 7779 7780 +4443 111 7784 7782 7783 +4444 111 7787 7785 7786 +4445 111 7790 7788 7789 +4446 111 7793 7791 7792 +4447 111 7796 7794 7795 +4448 111 7799 7797 7798 +4449 111 7802 7800 7801 +4450 111 7805 7803 7804 +4451 111 7808 7806 7807 +4452 111 7811 7809 7810 +4453 111 7814 7812 7813 +4454 111 7817 7815 7816 +4455 111 7820 7818 7819 +4456 111 7823 7821 7822 +4457 111 7826 7824 7825 +4458 111 7829 7827 7828 +4459 111 7832 7830 7831 +4460 111 7835 7833 7834 +4461 111 7838 7836 7837 +4462 111 7841 7839 7840 +4463 111 7844 7842 7843 +4464 111 7847 7845 7846 +4465 111 7850 7848 7849 +4466 111 7853 7851 7852 +4467 111 7856 7854 7855 +4468 111 7859 7857 7858 +4469 111 7862 7860 7861 +4470 111 7865 7863 7864 +4471 111 7868 7866 7867 +4472 111 7871 7869 7870 +4473 111 7874 7872 7873 +4474 111 7877 7875 7876 +4475 111 7880 7878 7879 +4476 111 7883 7881 7882 +4477 111 7886 7884 7885 +4478 111 7889 7887 7888 +4479 111 7892 7890 7891 +4480 111 7895 7893 7894 +4481 111 7898 7896 7897 +4482 111 7901 7899 7900 +4483 111 7904 7902 7903 +4484 111 7907 7905 7906 +4485 111 7910 7908 7909 +4486 111 7913 7911 7912 +4487 111 7916 7914 7915 +4488 111 7919 7917 7918 +4489 111 7922 7920 7921 +4490 111 7925 7923 7924 +4491 111 7928 7926 7927 +4492 111 7931 7929 7930 +4493 111 7934 7932 7933 +4494 111 7937 7935 7936 +4495 111 7940 7938 7939 +4496 111 7943 7941 7942 +4497 111 7946 7944 7945 +4498 111 7949 7947 7948 +4499 111 7952 7950 7951 +4500 111 7955 7953 7954 +4501 111 7958 7956 7957 +4502 111 7961 7959 7960 +4503 111 7964 7962 7963 +4504 111 7967 7965 7966 +4505 111 7970 7968 7969 +4506 111 7973 7971 7972 +4507 111 7976 7974 7975 +4508 111 7979 7977 7978 +4509 111 7982 7980 7981 +4510 111 7985 7983 7984 +4511 111 7988 7986 7987 +4512 111 7991 7989 7990 +4513 111 7994 7992 7993 +4514 111 7997 7995 7996 +4515 111 8000 7998 7999 +4516 111 8003 8001 8002 +4517 111 8006 8004 8005 +4518 111 8009 8007 8008 +4519 111 8012 8010 8011 +4520 111 8015 8013 8014 +4521 111 8018 8016 8017 +4522 111 8021 8019 8020 +4523 111 8024 8022 8023 +4524 111 8027 8025 8026 +4525 111 8030 8028 8029 +4526 111 8033 8031 8032 +4527 111 8036 8034 8035 +4528 111 8039 8037 8038 +4529 111 8042 8040 8041 +4530 111 8045 8043 8044 +4531 111 8048 8046 8047 +4532 111 8051 8049 8050 +4533 111 8054 8052 8053 +4534 111 8057 8055 8056 +4535 111 8060 8058 8059 +4536 111 8063 8061 8062 +4537 111 8066 8064 8065 +4538 111 8069 8067 8068 +4539 111 8072 8070 8071 +4540 111 8075 8073 8074 +4541 111 8078 8076 8077 +4542 111 8081 8079 8080 +4543 111 8084 8082 8083 +4544 111 8087 8085 8086 +4545 111 8090 8088 8089 +4546 111 8093 8091 8092 +4547 111 8096 8094 8095 +4548 111 8099 8097 8098 +4549 111 8102 8100 8101 +4550 111 8105 8103 8104 +4551 111 8108 8106 8107 +4552 111 8111 8109 8110 +4553 111 8114 8112 8113 +4554 111 8117 8115 8116 +4555 111 8120 8118 8119 +4556 111 8123 8121 8122 +4557 111 8126 8124 8125 +4558 111 8129 8127 8128 +4559 111 8132 8130 8131 +4560 111 8135 8133 8134 +4561 111 8138 8136 8137 +4562 111 8141 8139 8140 +4563 111 8144 8142 8143 +4564 111 8147 8145 8146 +4565 111 8150 8148 8149 +4566 111 8153 8151 8152 +4567 111 8156 8154 8155 +4568 111 8159 8157 8158 +4569 111 8162 8160 8161 +4570 111 8165 8163 8164 +4571 111 8168 8166 8167 +4572 111 8171 8169 8170 +4573 111 8174 8172 8173 +4574 111 8177 8175 8176 +4575 111 8180 8178 8179 +4576 111 8183 8181 8182 +4577 111 8186 8184 8185 +4578 111 8189 8187 8188 +4579 111 8192 8190 8191 +4580 111 8195 8193 8194 +4581 111 8198 8196 8197 +4582 111 8201 8199 8200 +4583 111 8204 8202 8203 +4584 111 8207 8205 8206 +4585 111 8210 8208 8209 +4586 111 8213 8211 8212 +4587 111 8216 8214 8215 +4588 111 8219 8217 8218 +4589 111 8222 8220 8221 +4590 111 8225 8223 8224 +4591 111 8228 8226 8227 +4592 111 8231 8229 8230 +4593 111 8234 8232 8233 +4594 111 8237 8235 8236 +4595 111 8240 8238 8239 +4596 111 8243 8241 8242 +4597 111 8246 8244 8245 +4598 111 8249 8247 8248 +4599 111 8252 8250 8251 +4600 111 8255 8253 8254 +4601 111 8258 8256 8257 +4602 111 8261 8259 8260 +4603 111 8264 8262 8263 +4604 111 8267 8265 8266 +4605 111 8270 8268 8269 +4606 111 8273 8271 8272 +4607 111 8276 8274 8275 +4608 111 8279 8277 8278 +4609 111 8282 8280 8281 +4610 111 8285 8283 8284 +4611 111 8288 8286 8287 +4612 111 8291 8289 8290 +4613 111 8294 8292 8293 +4614 111 8297 8295 8296 +4615 111 8300 8298 8299 +4616 111 8303 8301 8302 +4617 111 8306 8304 8305 +4618 111 8309 8307 8308 +4619 111 8312 8310 8311 +4620 111 8315 8313 8314 +4621 111 8318 8316 8317 +4622 111 8321 8319 8320 +4623 111 8324 8322 8323 +4624 111 8327 8325 8326 +4625 111 8330 8328 8329 +4626 111 8333 8331 8332 +4627 111 8336 8334 8335 +4628 111 8339 8337 8338 +4629 111 8342 8340 8341 +4630 111 8345 8343 8344 +4631 111 8348 8346 8347 +4632 111 8351 8349 8350 +4633 111 8354 8352 8353 +4634 111 8357 8355 8356 +4635 111 8360 8358 8359 +4636 111 8363 8361 8362 +4637 111 8366 8364 8365 +4638 111 8369 8367 8368 +4639 111 8372 8370 8371 +4640 111 8375 8373 8374 +4641 111 8378 8376 8377 +4642 111 8381 8379 8380 +4643 111 8384 8382 8383 +4644 111 8387 8385 8386 +4645 111 8390 8388 8389 +4646 111 8393 8391 8392 +4647 111 8396 8394 8395 +4648 111 8399 8397 8398 +4649 111 8402 8400 8401 +4650 111 8405 8403 8404 +4651 111 8408 8406 8407 +4652 111 8411 8409 8410 +4653 111 8414 8412 8413 +4654 111 8417 8415 8416 +4655 111 8420 8418 8419 +4656 111 8423 8421 8422 +4657 111 8426 8424 8425 +4658 111 8429 8427 8428 +4659 111 8432 8430 8431 +4660 111 8435 8433 8434 +4661 111 8438 8436 8437 +4662 111 8441 8439 8440 +4663 111 8444 8442 8443 +4664 111 8447 8445 8446 +4665 111 8450 8448 8449 +4666 111 8453 8451 8452 +4667 111 8456 8454 8455 +4668 111 8459 8457 8458 +4669 111 8462 8460 8461 +4670 111 8465 8463 8464 +4671 111 8468 8466 8467 +4672 111 8471 8469 8470 +4673 111 8474 8472 8473 +4674 111 8477 8475 8476 +4675 111 8480 8478 8479 +4676 111 8483 8481 8482 +4677 111 8486 8484 8485 +4678 111 8489 8487 8488 +4679 111 8492 8490 8491 +4680 111 8495 8493 8494 +4681 111 8498 8496 8497 +4682 111 8501 8499 8500 +4683 111 8504 8502 8503 +4684 111 8507 8505 8506 +4685 111 8510 8508 8509 +4686 111 8513 8511 8512 +4687 111 8516 8514 8515 +4688 111 8519 8517 8518 +4689 111 8522 8520 8521 +4690 111 8525 8523 8524 +4691 111 8528 8526 8527 +4692 111 8531 8529 8530 +4693 111 8534 8532 8533 +4694 111 8537 8535 8536 +4695 111 8540 8538 8539 +4696 111 8543 8541 8542 +4697 111 8546 8544 8545 +4698 111 8549 8547 8548 +4699 111 8552 8550 8551 +4700 111 8555 8553 8554 +4701 111 8558 8556 8557 +4702 111 8561 8559 8560 +4703 111 8564 8562 8563 +4704 111 8567 8565 8566 +4705 111 8570 8568 8569 +4706 111 8573 8571 8572 +4707 111 8576 8574 8575 +4708 111 8579 8577 8578 +4709 111 8582 8580 8581 +4710 111 8585 8583 8584 +4711 111 8588 8586 8587 +4712 111 8591 8589 8590 +4713 111 8594 8592 8593 +4714 111 8597 8595 8596 +4715 111 8600 8598 8599 +4716 111 8603 8601 8602 +4717 111 8606 8604 8605 +4718 111 8609 8607 8608 +4719 111 8612 8610 8611 +4720 111 8615 8613 8614 +4721 111 8618 8616 8617 +4722 111 8621 8619 8620 +4723 111 8624 8622 8623 +4724 111 8627 8625 8626 +4725 111 8630 8628 8629 +4726 111 8633 8631 8632 +4727 111 8636 8634 8635 +4728 111 8639 8637 8638 +4729 111 8642 8640 8641 +4730 111 8645 8643 8644 +4731 111 8648 8646 8647 +4732 111 8651 8649 8650 +4733 111 8654 8652 8653 +4734 111 8657 8655 8656 +4735 111 8660 8658 8659 +4736 111 8663 8661 8662 +4737 111 8666 8664 8665 +4738 111 8669 8667 8668 +4739 111 8672 8670 8671 +4740 111 8675 8673 8674 +4741 111 8678 8676 8677 +4742 111 8681 8679 8680 +4743 111 8684 8682 8683 +4744 111 8687 8685 8686 +4745 111 8690 8688 8689 +4746 111 8693 8691 8692 +4747 111 8696 8694 8695 +4748 111 8699 8697 8698 +4749 111 8702 8700 8701 +4750 111 8705 8703 8704 +4751 111 8708 8706 8707 +4752 111 8711 8709 8710 +4753 111 8714 8712 8713 +4754 111 8717 8715 8716 +4755 111 8720 8718 8719 +4756 111 8723 8721 8722 +4757 111 8726 8724 8725 +4758 111 8729 8727 8728 +4759 111 8732 8730 8731 +4760 111 8735 8733 8734 +4761 111 8738 8736 8737 +4762 111 8741 8739 8740 +4763 111 8744 8742 8743 +4764 111 8747 8745 8746 +4765 111 8750 8748 8749 +4766 111 8753 8751 8752 +4767 111 8756 8754 8755 +4768 111 8759 8757 8758 +4769 111 8762 8760 8761 +4770 111 8765 8763 8764 +4771 111 8768 8766 8767 +4772 111 8771 8769 8770 +4773 111 8774 8772 8773 +4774 111 8777 8775 8776 +4775 111 8780 8778 8779 +4776 111 8783 8781 8782 +4777 111 8786 8784 8785 +4778 111 8789 8787 8788 +4779 111 8792 8790 8791 +4780 111 8795 8793 8794 +4781 111 8798 8796 8797 +4782 111 8801 8799 8800 +4783 111 8804 8802 8803 +4784 111 8807 8805 8806 +4785 111 8810 8808 8809 +4786 111 8813 8811 8812 +4787 111 8816 8814 8815 +4788 111 8819 8817 8818 +4789 111 8822 8820 8821 +4790 111 8825 8823 8824 +4791 111 8828 8826 8827 +4792 111 8831 8829 8830 +4793 111 8834 8832 8833 +4794 111 8837 8835 8836 +4795 111 8840 8838 8839 +4796 111 8843 8841 8842 +4797 111 8846 8844 8845 +4798 111 8849 8847 8848 +4799 111 8852 8850 8851 +4800 111 8855 8853 8854 +4801 111 8858 8856 8857 +4802 111 8861 8859 8860 +4803 111 8864 8862 8863 +4804 111 8867 8865 8866 +4805 111 8870 8868 8869 +4806 111 8873 8871 8872 +4807 111 8876 8874 8875 +4808 111 8879 8877 8878 +4809 111 8882 8880 8881 +4810 111 8885 8883 8884 +4811 111 8888 8886 8887 +4812 111 8891 8889 8890 +4813 111 8894 8892 8893 +4814 111 8897 8895 8896 +4815 111 8900 8898 8899 +4816 111 8903 8901 8902 +4817 111 8906 8904 8905 +4818 111 8909 8907 8908 +4819 111 8912 8910 8911 +4820 111 8915 8913 8914 +4821 111 8918 8916 8917 +4822 111 8921 8919 8920 +4823 111 8924 8922 8923 +4824 111 8927 8925 8926 +4825 111 8930 8928 8929 +4826 111 8933 8931 8932 +4827 111 8936 8934 8935 +4828 111 8939 8937 8938 +4829 111 8942 8940 8941 +4830 111 8945 8943 8944 +4831 111 8948 8946 8947 +4832 111 8951 8949 8950 +4833 111 8954 8952 8953 +4834 111 8957 8955 8956 +4835 111 8960 8958 8959 +4836 111 8963 8961 8962 +4837 111 8966 8964 8965 +4838 111 8969 8967 8968 +4839 111 8972 8970 8971 +4840 111 8975 8973 8974 +4841 111 8978 8976 8977 +4842 111 8981 8979 8980 +4843 111 8984 8982 8983 +4844 111 8987 8985 8986 +4845 111 8990 8988 8989 +4846 111 8993 8991 8992 +4847 111 8996 8994 8995 +4848 111 8999 8997 8998 +4849 111 9002 9000 9001 +4850 111 9005 9003 9004 +4851 111 9008 9006 9007 +4852 111 9011 9009 9010 +4853 111 9014 9012 9013 +4854 111 9017 9015 9016 +4855 111 9020 9018 9019 +4856 111 9023 9021 9022 +4857 111 9026 9024 9025 +4858 111 9029 9027 9028 +4859 111 9032 9030 9031 +4860 111 9035 9033 9034 +4861 111 9038 9036 9037 +4862 111 9041 9039 9040 +4863 111 9044 9042 9043 +4864 111 9047 9045 9046 +4865 111 9050 9048 9049 +4866 111 9053 9051 9052 +4867 111 9056 9054 9055 +4868 111 9059 9057 9058 +4869 111 9062 9060 9061 +4870 111 9065 9063 9064 +4871 111 9068 9066 9067 +4872 111 9071 9069 9070 +4873 111 9074 9072 9073 +4874 111 9077 9075 9076 +4875 111 9080 9078 9079 +4876 111 9083 9081 9082 +4877 111 9086 9084 9085 +4878 111 9089 9087 9088 +4879 111 9092 9090 9091 +4880 111 9095 9093 9094 +4881 111 9098 9096 9097 +4882 111 9101 9099 9100 +4883 111 9104 9102 9103 +4884 111 9107 9105 9106 +4885 111 9110 9108 9109 +4886 111 9113 9111 9112 +4887 111 9116 9114 9115 +4888 111 9119 9117 9118 +4889 111 9122 9120 9121 +4890 111 9125 9123 9124 +4891 111 9128 9126 9127 +4892 111 9131 9129 9130 +4893 111 9134 9132 9133 +4894 111 9137 9135 9136 +4895 111 9140 9138 9139 +4896 111 9143 9141 9142 +4897 111 9146 9144 9145 +4898 111 9149 9147 9148 +4899 111 9152 9150 9151 +4900 111 9155 9153 9154 +4901 111 9158 9156 9157 +4902 111 9161 9159 9160 +4903 111 9164 9162 9163 +4904 111 9167 9165 9166 +4905 111 9170 9168 9169 +4906 111 9173 9171 9172 +4907 111 9176 9174 9175 +4908 111 9179 9177 9178 +4909 111 9182 9180 9181 +4910 111 9185 9183 9184 +4911 111 9188 9186 9187 +4912 111 9191 9189 9190 +4913 111 9194 9192 9193 +4914 111 9197 9195 9196 +4915 111 9200 9198 9199 +4916 111 9203 9201 9202 +4917 111 9206 9204 9205 +4918 111 9209 9207 9208 +4919 111 9212 9210 9211 +4920 111 9215 9213 9214 +4921 111 9218 9216 9217 +4922 111 9221 9219 9220 +4923 111 9224 9222 9223 +4924 111 9227 9225 9226 +4925 111 9230 9228 9229 +4926 111 9233 9231 9232 +4927 111 9236 9234 9235 +4928 111 9239 9237 9238 +4929 111 9242 9240 9241 +4930 111 9245 9243 9244 +4931 111 9248 9246 9247 +4932 111 9251 9249 9250 +4933 111 9254 9252 9253 +4934 111 9257 9255 9256 +4935 111 9260 9258 9259 +4936 111 9263 9261 9262 +4937 111 9266 9264 9265 +4938 111 9269 9267 9268 +4939 111 9272 9270 9271 +4940 111 9275 9273 9274 +4941 111 9278 9276 9277 +4942 111 9281 9279 9280 +4943 111 9284 9282 9283 +4944 111 9287 9285 9286 +4945 111 9290 9288 9289 +4946 111 9293 9291 9292 +4947 111 9296 9294 9295 +4948 111 9299 9297 9298 +4949 111 9302 9300 9301 +4950 111 9305 9303 9304 +4951 111 9308 9306 9307 +4952 111 9311 9309 9310 +4953 111 9314 9312 9313 +4954 111 9317 9315 9316 +4955 111 9320 9318 9319 +4956 111 9323 9321 9322 +4957 111 9326 9324 9325 +4958 111 9329 9327 9328 +4959 111 9332 9330 9331 +4960 111 9335 9333 9334 +4961 111 9338 9336 9337 +4962 111 9341 9339 9340 +4963 111 9344 9342 9343 +4964 111 9347 9345 9346 +4965 111 9350 9348 9349 +4966 111 9353 9351 9352 +4967 111 9356 9354 9355 +4968 111 9359 9357 9358 +4969 111 9362 9360 9361 +4970 111 9365 9363 9364 +4971 111 9368 9366 9367 +4972 111 9371 9369 9370 +4973 111 9374 9372 9373 +4974 111 9377 9375 9376 +4975 111 9380 9378 9379 +4976 111 9383 9381 9382 +4977 111 9386 9384 9385 +4978 111 9389 9387 9388 +4979 111 9392 9390 9391 +4980 111 9395 9393 9394 +4981 111 9398 9396 9397 +4982 111 9401 9399 9400 +4983 111 9404 9402 9403 +4984 111 9407 9405 9406 +4985 111 9410 9408 9409 +4986 111 9413 9411 9412 +4987 111 9416 9414 9415 +4988 111 9419 9417 9418 +4989 111 9422 9420 9421 +4990 111 9425 9423 9424 +4991 111 9428 9426 9427 +4992 111 9431 9429 9430 +4993 111 9434 9432 9433 +4994 111 9437 9435 9436 +4995 111 9440 9438 9439 +4996 111 9443 9441 9442 +4997 111 9446 9444 9445 +4998 111 9449 9447 9448 +4999 111 9452 9450 9451 +5000 111 9455 9453 9454 +5001 111 9458 9456 9457 +5002 111 9461 9459 9460 +5003 111 9464 9462 9463 +5004 111 9467 9465 9466 +5005 111 9470 9468 9469 +5006 111 9473 9471 9472 +5007 111 9476 9474 9475 +5008 111 9479 9477 9478 +5009 111 9482 9480 9481 +5010 111 9485 9483 9484 +5011 111 9488 9486 9487 +5012 111 9491 9489 9490 +5013 111 9494 9492 9493 +5014 111 9497 9495 9496 +5015 111 9500 9498 9499 +5016 111 9503 9501 9502 +5017 111 9506 9504 9505 +5018 111 9509 9507 9508 +5019 111 9512 9510 9511 +5020 111 9515 9513 9514 +5021 111 9518 9516 9517 +5022 111 9521 9519 9520 +5023 111 9524 9522 9523 +5024 111 9527 9525 9526 +5025 111 9530 9528 9529 +5026 111 9533 9531 9532 +5027 111 9536 9534 9535 +5028 111 9539 9537 9538 +5029 111 9542 9540 9541 +5030 111 9545 9543 9544 +5031 111 9548 9546 9547 +5032 111 9551 9549 9550 +5033 111 9554 9552 9553 +5034 111 9557 9555 9556 +5035 111 9560 9558 9559 +5036 111 9563 9561 9562 +5037 111 9566 9564 9565 +5038 111 9569 9567 9568 +5039 111 9572 9570 9571 +5040 111 9575 9573 9574 +5041 111 9578 9576 9577 +5042 111 9581 9579 9580 +5043 111 9584 9582 9583 +5044 111 9587 9585 9586 +5045 111 9590 9588 9589 +5046 111 9593 9591 9592 +5047 111 9596 9594 9595 +5048 111 9599 9597 9598 +5049 111 9602 9600 9601 +5050 111 9605 9603 9604 +5051 111 9608 9606 9607 +5052 111 9611 9609 9610 +5053 111 9614 9612 9613 +5054 111 9617 9615 9616 +5055 111 9620 9618 9619 +5056 111 9623 9621 9622 +5057 111 9626 9624 9625 +5058 111 9629 9627 9628 +5059 111 9632 9630 9631 +5060 111 9635 9633 9634 +5061 111 9638 9636 9637 +5062 111 9641 9639 9640 +5063 111 9644 9642 9643 +5064 111 9647 9645 9646 +5065 111 9650 9648 9649 +5066 111 9653 9651 9652 +5067 111 9656 9654 9655 +5068 111 9659 9657 9658 +5069 111 9662 9660 9661 +5070 111 9665 9663 9664 +5071 111 9668 9666 9667 +5072 111 9671 9669 9670 +5073 111 9674 9672 9673 +5074 111 9677 9675 9676 +5075 111 9680 9678 9679 +5076 111 9683 9681 9682 +5077 111 9686 9684 9685 +5078 111 9689 9687 9688 +5079 111 9692 9690 9691 +5080 111 9695 9693 9694 +5081 111 9698 9696 9697 +5082 111 9701 9699 9700 +5083 111 9704 9702 9703 +5084 111 9707 9705 9706 +5085 111 9710 9708 9709 +5086 111 9713 9711 9712 +5087 111 9716 9714 9715 +5088 111 9719 9717 9718 +5089 111 9722 9720 9721 +5090 111 9725 9723 9724 +5091 111 9728 9726 9727 +5092 111 9731 9729 9730 +5093 111 9734 9732 9733 +5094 111 9737 9735 9736 + +Dihedrals + +1 1 5 1 2 3 +2 2 5 1 2 8 +3 3 5 1 2 9 +4 1 6 1 2 3 +5 2 6 1 2 8 +6 3 6 1 2 9 +7 1 7 1 2 3 +8 2 7 1 2 8 +9 3 7 1 2 9 +10 4 1 2 3 4 +11 5 1 2 3 20 +12 6 1 2 9 10 +13 7 1 2 9 13 +14 7 1 2 9 14 +15 8 3 2 9 10 +16 9 3 2 9 13 +17 9 3 2 9 14 +18 10 8 2 3 4 +19 11 8 2 3 20 +20 12 8 2 9 10 +21 13 8 2 9 13 +22 13 8 2 9 14 +23 14 9 2 3 4 +24 15 9 2 3 20 +25 16 2 3 20 21 +26 17 2 3 20 24 +27 18 4 3 20 21 +28 19 4 3 20 24 +29 20 2 9 10 11 +30 21 2 9 10 15 +31 21 2 9 10 16 +32 22 13 9 10 11 +33 23 13 9 10 15 +34 23 13 9 10 16 +35 22 14 9 10 11 +36 23 14 9 10 15 +37 23 14 9 10 16 +38 24 9 10 11 12 +39 25 15 10 11 12 +40 25 16 10 11 12 +41 25 10 11 12 17 +42 25 10 11 12 18 +43 25 10 11 12 19 +44 26 3 20 21 22 +45 27 3 20 21 25 +46 28 3 20 21 26 +47 29 24 20 21 22 +48 30 24 20 21 25 +49 31 24 20 21 26 +50 32 20 21 22 23 +51 33 20 21 22 37 +52 34 20 21 26 27 +53 35 20 21 26 31 +54 35 20 21 26 32 +55 8 22 21 26 27 +56 9 22 21 26 31 +57 9 22 21 26 32 +58 10 25 21 22 23 +59 11 25 21 22 37 +60 12 25 21 26 27 +61 13 25 21 26 31 +62 13 25 21 26 32 +63 14 26 21 22 23 +64 15 26 21 22 37 +65 16 21 22 37 38 +66 17 21 22 37 41 +67 18 23 22 37 38 +68 19 23 22 37 41 +69 36 21 26 27 28 +70 21 21 26 27 33 +71 21 21 26 27 34 +72 37 31 26 27 28 +73 23 31 26 27 33 +74 23 31 26 27 34 +75 37 32 26 27 28 +76 23 32 26 27 33 +77 23 32 26 27 34 +78 38 26 27 28 29 +79 39 26 27 28 30 +80 40 33 27 28 29 +81 41 33 27 28 30 +82 40 34 27 28 29 +83 41 34 27 28 30 +84 42 27 28 30 35 +85 42 27 28 30 36 +86 19 29 28 30 35 +87 19 29 28 30 36 +88 26 22 37 38 39 +89 27 22 37 38 42 +90 43 22 37 38 43 +91 29 41 37 38 39 +92 30 41 37 38 42 +93 44 41 37 38 43 +94 32 37 38 39 40 +95 33 37 38 39 56 +96 45 37 38 43 44 +97 45 37 38 43 45 +98 46 37 38 43 47 +99 47 39 38 43 44 +100 47 39 38 43 45 +101 48 39 38 43 47 +102 10 42 38 39 40 +103 11 42 38 39 56 +104 49 42 38 43 44 +105 49 42 38 43 45 +106 50 42 38 43 47 +107 51 43 38 39 40 +108 52 43 38 39 56 +109 16 38 39 56 57 +110 17 38 39 56 60 +111 18 40 39 56 57 +112 19 40 39 56 60 +113 53 38 43 44 46 +114 54 38 43 44 48 +115 54 38 43 44 49 +116 54 38 43 45 50 +117 54 38 43 45 51 +118 54 38 43 45 52 +119 55 44 43 45 50 +120 55 44 43 45 51 +121 55 44 43 45 52 +122 56 45 43 44 46 +123 55 45 43 44 48 +124 55 45 43 44 49 +125 12 47 43 44 46 +126 13 47 43 44 48 +127 13 47 43 44 49 +128 13 47 43 45 50 +129 13 47 43 45 51 +130 13 47 43 45 52 +131 21 43 44 46 53 +132 21 43 44 46 54 +133 21 43 44 46 55 +134 23 48 44 46 53 +135 23 48 44 46 54 +136 23 48 44 46 55 +137 23 49 44 46 53 +138 23 49 44 46 54 +139 23 49 44 46 55 +140 26 39 56 57 58 +141 27 39 56 57 61 +142 28 39 56 57 62 +143 29 60 56 57 58 +144 30 60 56 57 61 +145 31 60 56 57 62 +146 32 56 57 58 59 +147 33 56 57 58 76 +148 57 56 57 62 63 +149 35 56 57 62 69 +150 35 56 57 62 70 +151 58 58 57 62 63 +152 9 58 57 62 69 +153 9 58 57 62 70 +154 10 61 57 58 59 +155 11 61 57 58 76 +156 59 61 57 62 63 +157 13 61 57 62 69 +158 13 61 57 62 70 +159 14 62 57 58 59 +160 15 62 57 58 76 +161 16 57 58 76 77 +162 17 57 58 76 80 +163 18 59 58 76 77 +164 19 59 58 76 80 +165 60 57 62 63 64 +166 60 57 62 63 65 +167 61 69 62 63 64 +168 61 69 62 63 65 +169 61 70 62 63 64 +170 61 70 62 63 65 +171 62 62 63 64 66 +172 63 62 63 64 71 +173 62 62 63 65 67 +174 63 62 63 65 72 +175 64 64 63 65 67 +176 65 64 63 65 72 +177 64 65 63 64 66 +178 65 65 63 64 71 +179 64 63 64 66 68 +180 65 63 64 66 73 +181 65 71 64 66 68 +182 66 71 64 66 73 +183 64 63 65 67 68 +184 65 63 65 67 74 +185 65 72 65 67 68 +186 66 72 65 67 74 +187 64 64 66 68 67 +188 65 64 66 68 75 +189 65 73 66 68 67 +190 66 73 66 68 75 +191 64 65 67 68 66 +192 65 65 67 68 75 +193 65 74 67 68 66 +194 66 74 67 68 75 +195 26 58 76 77 78 +196 27 58 76 77 81 +197 43 58 76 77 82 +198 29 80 76 77 78 +199 30 80 76 77 81 +200 44 80 76 77 82 +201 32 76 77 78 79 +202 33 76 77 78 92 +203 45 76 77 82 83 +204 45 76 77 82 84 +205 46 76 77 82 85 +206 47 78 77 82 83 +207 47 78 77 82 84 +208 48 78 77 82 85 +209 10 81 77 78 79 +210 11 81 77 78 92 +211 49 81 77 82 83 +212 49 81 77 82 84 +213 50 81 77 82 85 +214 51 82 77 78 79 +215 52 82 77 78 92 +216 16 77 78 92 93 +217 17 77 78 92 96 +218 18 79 78 92 93 +219 19 79 78 92 96 +220 54 77 82 83 86 +221 54 77 82 83 87 +222 54 77 82 83 88 +223 54 77 82 84 89 +224 54 77 82 84 90 +225 54 77 82 84 91 +226 55 83 82 84 89 +227 55 83 82 84 90 +228 55 83 82 84 91 +229 55 84 82 83 86 +230 55 84 82 83 87 +231 55 84 82 83 88 +232 13 85 82 83 86 +233 13 85 82 83 87 +234 13 85 82 83 88 +235 13 85 82 84 89 +236 13 85 82 84 90 +237 13 85 82 84 91 +238 26 78 92 93 94 +239 27 78 92 93 97 +240 28 78 92 93 98 +241 29 96 92 93 94 +242 30 96 92 93 97 +243 31 96 92 93 98 +244 32 92 93 94 95 +245 33 92 93 94 114 +246 34 92 93 98 99 +247 35 92 93 98 103 +248 35 92 93 98 104 +249 8 94 93 98 99 +250 9 94 93 98 103 +251 9 94 93 98 104 +252 10 97 93 94 95 +253 11 97 93 94 114 +254 12 97 93 98 99 +255 13 97 93 98 103 +256 13 97 93 98 104 +257 14 98 93 94 95 +258 15 98 93 94 114 +259 16 93 94 114 115 +260 17 93 94 114 118 +261 18 95 94 114 115 +262 19 95 94 114 118 +263 67 93 98 99 100 +264 21 93 98 99 105 +265 21 93 98 99 106 +266 68 103 98 99 100 +267 23 103 98 99 105 +268 23 103 98 99 106 +269 68 104 98 99 100 +270 23 104 98 99 105 +271 23 104 98 99 106 +272 69 98 99 100 101 +273 68 98 99 100 107 +274 68 98 99 100 108 +275 68 105 99 100 101 +276 23 105 99 100 107 +277 23 105 99 100 108 +278 68 106 99 100 101 +279 23 106 99 100 107 +280 23 106 99 100 108 +281 70 99 100 101 102 +282 68 99 100 101 109 +283 68 99 100 101 110 +284 71 107 100 101 102 +285 23 107 100 101 109 +286 23 107 100 101 110 +287 71 108 100 101 102 +288 23 108 100 101 109 +289 23 108 100 101 110 +290 72 100 101 102 111 +291 72 100 101 102 112 +292 72 100 101 102 113 +293 73 109 101 102 111 +294 73 109 101 102 112 +295 73 109 101 102 113 +296 73 110 101 102 111 +297 73 110 101 102 112 +298 73 110 101 102 113 +299 26 94 114 115 116 +300 27 94 114 115 119 +301 43 94 114 115 120 +302 29 118 114 115 116 +303 30 118 114 115 119 +304 44 118 114 115 120 +305 32 114 115 116 117 +306 33 114 115 116 128 +307 74 114 115 120 121 +308 45 114 115 120 122 +309 46 114 115 120 123 +310 75 116 115 120 121 +311 47 116 115 120 122 +312 48 116 115 120 123 +313 10 119 115 116 117 +314 11 119 115 116 128 +315 76 119 115 120 121 +316 49 119 115 120 122 +317 50 119 115 120 123 +318 51 120 115 116 117 +319 52 120 115 116 128 +320 16 115 116 128 129 +321 17 115 116 128 132 +322 18 117 116 128 129 +323 19 117 116 128 132 +324 77 115 120 121 124 +325 54 115 120 122 125 +326 54 115 120 122 126 +327 54 115 120 122 127 +328 78 121 120 122 125 +329 78 121 120 122 126 +330 78 121 120 122 127 +331 79 122 120 121 124 +332 80 123 120 121 124 +333 13 123 120 122 125 +334 13 123 120 122 126 +335 13 123 120 122 127 +336 26 116 128 129 130 +337 27 116 128 129 133 +338 28 116 128 129 134 +339 29 132 128 129 130 +340 30 132 128 129 133 +341 31 132 128 129 134 +342 32 128 129 130 131 +343 33 128 129 130 147 +344 81 128 129 134 135 +345 35 128 129 134 138 +346 35 128 129 134 139 +347 82 130 129 134 135 +348 9 130 129 134 138 +349 9 130 129 134 139 +350 10 133 129 130 131 +351 11 133 129 130 147 +352 83 133 129 134 135 +353 13 133 129 134 138 +354 13 133 129 134 139 +355 14 134 129 130 131 +356 15 134 129 130 147 +357 16 129 130 147 148 +358 17 129 130 147 151 +359 18 131 130 147 148 +360 19 131 130 147 151 +361 84 129 134 135 136 +362 84 129 134 135 137 +363 83 129 134 135 140 +364 55 138 134 135 136 +365 55 138 134 135 137 +366 13 138 134 135 140 +367 55 139 134 135 136 +368 55 139 134 135 137 +369 13 139 134 135 140 +370 55 134 135 136 141 +371 55 134 135 136 142 +372 55 134 135 136 143 +373 55 134 135 137 144 +374 55 134 135 137 145 +375 55 134 135 137 146 +376 55 136 135 137 144 +377 55 136 135 137 145 +378 55 136 135 137 146 +379 55 137 135 136 141 +380 55 137 135 136 142 +381 55 137 135 136 143 +382 13 140 135 136 141 +383 13 140 135 136 142 +384 13 140 135 136 143 +385 13 140 135 137 144 +386 13 140 135 137 145 +387 13 140 135 137 146 +388 26 130 147 148 149 +389 27 130 147 148 152 +390 43 130 147 148 153 +391 29 151 147 148 149 +392 30 151 147 148 152 +393 44 151 147 148 153 +394 32 147 148 149 150 +395 33 147 148 149 161 +396 74 147 148 153 154 +397 45 147 148 153 155 +398 46 147 148 153 156 +399 75 149 148 153 154 +400 47 149 148 153 155 +401 48 149 148 153 156 +402 10 152 148 149 150 +403 11 152 148 149 161 +404 76 152 148 153 154 +405 49 152 148 153 155 +406 50 152 148 153 156 +407 51 153 148 149 150 +408 52 153 148 149 161 +409 85 148 149 161 162 +410 17 148 149 161 165 +411 86 150 149 161 162 +412 19 150 149 161 165 +413 77 148 153 154 157 +414 54 148 153 155 158 +415 54 148 153 155 159 +416 54 148 153 155 160 +417 78 154 153 155 158 +418 78 154 153 155 159 +419 78 154 153 155 160 +420 79 155 153 154 157 +421 80 156 153 154 157 +422 13 156 153 155 158 +423 13 156 153 155 159 +424 13 156 153 155 160 +425 87 149 161 162 163 +426 88 149 161 162 166 +427 88 149 161 162 167 +428 89 165 161 162 163 +429 90 165 161 162 166 +430 90 165 161 162 167 +431 91 161 162 163 164 +432 92 161 162 163 168 +433 93 166 162 163 164 +434 94 166 162 163 168 +435 93 167 162 163 164 +436 94 167 162 163 168 +437 95 162 163 168 169 +438 96 162 163 168 172 +439 18 164 163 168 169 +440 19 164 163 168 172 +441 26 163 168 169 170 +442 27 163 168 169 173 +443 28 163 168 169 174 +444 29 172 168 169 170 +445 30 172 168 169 173 +446 31 172 168 169 174 +447 32 168 169 170 171 +448 33 168 169 170 190 +449 34 168 169 174 175 +450 35 168 169 174 179 +451 35 168 169 174 180 +452 8 170 169 174 175 +453 9 170 169 174 179 +454 9 170 169 174 180 +455 10 173 169 170 171 +456 11 173 169 170 190 +457 12 173 169 174 175 +458 13 173 169 174 179 +459 13 173 169 174 180 +460 14 174 169 170 171 +461 15 174 169 170 190 +462 16 169 170 190 191 +463 17 169 170 190 194 +464 18 171 170 190 191 +465 19 171 170 190 194 +466 67 169 174 175 176 +467 21 169 174 175 181 +468 21 169 174 175 182 +469 68 179 174 175 176 +470 23 179 174 175 181 +471 23 179 174 175 182 +472 68 180 174 175 176 +473 23 180 174 175 181 +474 23 180 174 175 182 +475 69 174 175 176 177 +476 68 174 175 176 183 +477 68 174 175 176 184 +478 68 181 175 176 177 +479 23 181 175 176 183 +480 23 181 175 176 184 +481 68 182 175 176 177 +482 23 182 175 176 183 +483 23 182 175 176 184 +484 70 175 176 177 178 +485 68 175 176 177 185 +486 68 175 176 177 186 +487 71 183 176 177 178 +488 23 183 176 177 185 +489 23 183 176 177 186 +490 71 184 176 177 178 +491 23 184 176 177 185 +492 23 184 176 177 186 +493 72 176 177 178 187 +494 72 176 177 178 188 +495 72 176 177 178 189 +496 73 185 177 178 187 +497 73 185 177 178 188 +498 73 185 177 178 189 +499 73 186 177 178 187 +500 73 186 177 178 188 +501 73 186 177 178 189 +502 26 170 190 191 192 +503 27 170 190 191 195 +504 43 170 190 191 196 +505 29 194 190 191 192 +506 30 194 190 191 195 +507 44 194 190 191 196 +508 32 190 191 192 193 +509 33 190 191 192 204 +510 74 190 191 196 197 +511 45 190 191 196 198 +512 46 190 191 196 199 +513 75 192 191 196 197 +514 47 192 191 196 198 +515 48 192 191 196 199 +516 10 195 191 192 193 +517 11 195 191 192 204 +518 76 195 191 196 197 +519 49 195 191 196 198 +520 50 195 191 196 199 +521 51 196 191 192 193 +522 52 196 191 192 204 +523 16 191 192 204 205 +524 17 191 192 204 208 +525 18 193 192 204 205 +526 19 193 192 204 208 +527 77 191 196 197 200 +528 54 191 196 198 201 +529 54 191 196 198 202 +530 54 191 196 198 203 +531 78 197 196 198 201 +532 78 197 196 198 202 +533 78 197 196 198 203 +534 79 198 196 197 200 +535 80 199 196 197 200 +536 13 199 196 198 201 +537 13 199 196 198 202 +538 13 199 196 198 203 +539 26 192 204 205 206 +540 27 192 204 205 209 +541 43 192 204 205 210 +542 29 208 204 205 206 +543 30 208 204 205 209 +544 44 208 204 205 210 +545 32 204 205 206 207 +546 33 204 205 206 223 +547 45 204 205 210 211 +548 45 204 205 210 212 +549 46 204 205 210 214 +550 47 206 205 210 211 +551 47 206 205 210 212 +552 48 206 205 210 214 +553 10 209 205 206 207 +554 11 209 205 206 223 +555 49 209 205 210 211 +556 49 209 205 210 212 +557 50 209 205 210 214 +558 51 210 205 206 207 +559 52 210 205 206 223 +560 16 205 206 223 224 +561 17 205 206 223 227 +562 18 207 206 223 224 +563 19 207 206 223 227 +564 53 205 210 211 213 +565 54 205 210 211 215 +566 54 205 210 211 216 +567 54 205 210 212 217 +568 54 205 210 212 218 +569 54 205 210 212 219 +570 55 211 210 212 217 +571 55 211 210 212 218 +572 55 211 210 212 219 +573 56 212 210 211 213 +574 55 212 210 211 215 +575 55 212 210 211 216 +576 12 214 210 211 213 +577 13 214 210 211 215 +578 13 214 210 211 216 +579 13 214 210 212 217 +580 13 214 210 212 218 +581 13 214 210 212 219 +582 21 210 211 213 220 +583 21 210 211 213 221 +584 21 210 211 213 222 +585 23 215 211 213 220 +586 23 215 211 213 221 +587 23 215 211 213 222 +588 23 216 211 213 220 +589 23 216 211 213 221 +590 23 216 211 213 222 +591 26 206 223 224 225 +592 27 206 223 224 228 +593 43 206 223 224 229 +594 29 227 223 224 225 +595 30 227 223 224 228 +596 44 227 223 224 229 +597 32 223 224 225 226 +598 33 223 224 225 237 +599 74 223 224 229 230 +600 45 223 224 229 231 +601 46 223 224 229 232 +602 75 225 224 229 230 +603 47 225 224 229 231 +604 48 225 224 229 232 +605 10 228 224 225 226 +606 11 228 224 225 237 +607 76 228 224 229 230 +608 49 228 224 229 231 +609 50 228 224 229 232 +610 51 229 224 225 226 +611 52 229 224 225 237 +612 16 224 225 237 238 +613 17 224 225 237 241 +614 18 226 225 237 238 +615 19 226 225 237 241 +616 77 224 229 230 233 +617 54 224 229 231 234 +618 54 224 229 231 235 +619 54 224 229 231 236 +620 78 230 229 231 234 +621 78 230 229 231 235 +622 78 230 229 231 236 +623 79 231 229 230 233 +624 80 232 229 230 233 +625 13 232 229 231 234 +626 13 232 229 231 235 +627 13 232 229 231 236 +628 26 225 237 238 239 +629 27 225 237 238 242 +630 28 225 237 238 243 +631 29 241 237 238 239 +632 30 241 237 238 242 +633 31 241 237 238 243 +634 32 237 238 239 240 +635 33 237 238 239 256 +636 81 237 238 243 244 +637 35 237 238 243 247 +638 35 237 238 243 248 +639 82 239 238 243 244 +640 9 239 238 243 247 +641 9 239 238 243 248 +642 10 242 238 239 240 +643 11 242 238 239 256 +644 83 242 238 243 244 +645 13 242 238 243 247 +646 13 242 238 243 248 +647 14 243 238 239 240 +648 15 243 238 239 256 +649 16 238 239 256 257 +650 17 238 239 256 260 +651 18 240 239 256 257 +652 19 240 239 256 260 +653 84 238 243 244 245 +654 84 238 243 244 246 +655 83 238 243 244 249 +656 55 247 243 244 245 +657 55 247 243 244 246 +658 13 247 243 244 249 +659 55 248 243 244 245 +660 55 248 243 244 246 +661 13 248 243 244 249 +662 55 243 244 245 250 +663 55 243 244 245 251 +664 55 243 244 245 252 +665 55 243 244 246 253 +666 55 243 244 246 254 +667 55 243 244 246 255 +668 55 245 244 246 253 +669 55 245 244 246 254 +670 55 245 244 246 255 +671 55 246 244 245 250 +672 55 246 244 245 251 +673 55 246 244 245 252 +674 13 249 244 245 250 +675 13 249 244 245 251 +676 13 249 244 245 252 +677 13 249 244 246 253 +678 13 249 244 246 254 +679 13 249 244 246 255 +680 26 239 256 257 258 +681 27 239 256 257 261 +682 28 239 256 257 262 +683 29 260 256 257 258 +684 30 260 256 257 261 +685 31 260 256 257 262 +686 32 256 257 258 259 +687 33 256 257 258 271 +688 34 256 257 262 263 +689 35 256 257 262 267 +690 35 256 257 262 268 +691 8 258 257 262 263 +692 9 258 257 262 267 +693 9 258 257 262 268 +694 10 261 257 258 259 +695 11 261 257 258 271 +696 12 261 257 262 263 +697 13 261 257 262 267 +698 13 261 257 262 268 +699 14 262 257 258 259 +700 15 262 257 258 271 +701 16 257 258 271 272 +702 17 257 258 271 275 +703 18 259 258 271 272 +704 19 259 258 271 275 +705 97 257 262 263 264 +706 21 257 262 263 269 +707 21 257 262 263 270 +708 98 267 262 263 264 +709 23 267 262 263 269 +710 23 267 262 263 270 +711 98 268 262 263 264 +712 23 268 262 263 269 +713 23 268 262 263 270 +714 99 262 263 264 265 +715 99 262 263 264 266 +716 100 269 263 264 265 +717 100 269 263 264 266 +718 100 270 263 264 265 +719 100 270 263 264 266 +720 26 258 271 272 273 +721 27 258 271 272 276 +722 43 258 271 272 277 +723 29 275 271 272 273 +724 30 275 271 272 276 +725 44 275 271 272 277 +726 32 271 272 273 274 +727 33 271 272 273 287 +728 45 271 272 277 278 +729 45 271 272 277 279 +730 46 271 272 277 280 +731 47 273 272 277 278 +732 47 273 272 277 279 +733 48 273 272 277 280 +734 10 276 272 273 274 +735 11 276 272 273 287 +736 49 276 272 277 278 +737 49 276 272 277 279 +738 50 276 272 277 280 +739 51 277 272 273 274 +740 52 277 272 273 287 +741 16 272 273 287 288 +742 17 272 273 287 291 +743 18 274 273 287 288 +744 19 274 273 287 291 +745 54 272 277 278 281 +746 54 272 277 278 282 +747 54 272 277 278 283 +748 54 272 277 279 284 +749 54 272 277 279 285 +750 54 272 277 279 286 +751 55 278 277 279 284 +752 55 278 277 279 285 +753 55 278 277 279 286 +754 55 279 277 278 281 +755 55 279 277 278 282 +756 55 279 277 278 283 +757 13 280 277 278 281 +758 13 280 277 278 282 +759 13 280 277 278 283 +760 13 280 277 279 284 +761 13 280 277 279 285 +762 13 280 277 279 286 +763 26 273 287 288 289 +764 27 273 287 288 292 +765 28 273 287 288 293 +766 29 291 287 288 289 +767 30 291 287 288 292 +768 31 291 287 288 293 +769 32 287 288 289 290 +770 101 287 288 289 302 +771 34 287 288 293 294 +772 35 287 288 293 298 +773 35 287 288 293 299 +774 8 289 288 293 294 +775 9 289 288 293 298 +776 9 289 288 293 299 +777 10 292 288 289 290 +778 102 292 288 289 302 +779 12 292 288 293 294 +780 13 292 288 293 298 +781 13 292 288 293 299 +782 14 293 288 289 290 +783 103 293 288 289 302 +784 104 288 289 302 303 +785 105 288 289 302 309 +786 106 290 289 302 303 +787 107 290 289 302 309 +788 97 288 293 294 295 +789 21 288 293 294 300 +790 21 288 293 294 301 +791 98 298 293 294 295 +792 23 298 293 294 300 +793 23 298 293 294 301 +794 98 299 293 294 295 +795 23 299 293 294 300 +796 23 299 293 294 301 +797 99 293 294 295 296 +798 99 293 294 295 297 +799 100 300 294 295 296 +800 100 300 294 295 297 +801 100 301 294 295 296 +802 100 301 294 295 297 +803 108 289 302 303 304 +804 109 289 302 303 306 +805 110 289 302 303 307 +806 111 289 302 309 308 +807 112 289 302 309 314 +808 112 289 302 309 315 +809 113 303 302 309 308 +810 114 303 302 309 314 +811 114 303 302 309 315 +812 115 309 302 303 304 +813 116 309 302 303 306 +814 117 309 302 303 307 +815 118 302 303 304 305 +816 119 302 303 304 316 +817 120 302 303 307 308 +818 121 302 303 307 310 +819 121 302 303 307 311 +820 122 304 303 307 308 +821 123 304 303 307 310 +822 123 304 303 307 311 +823 10 306 303 304 305 +824 11 306 303 304 316 +825 124 306 303 307 308 +826 125 306 303 307 310 +827 125 306 303 307 311 +828 126 307 303 304 305 +829 127 307 303 304 316 +830 16 303 304 316 317 +831 17 303 304 316 320 +832 18 305 304 316 317 +833 19 305 304 316 320 +834 128 303 307 308 309 +835 129 303 307 308 312 +836 129 303 307 308 313 +837 130 310 307 308 309 +838 131 310 307 308 312 +839 131 310 307 308 313 +840 130 311 307 308 309 +841 131 311 307 308 312 +842 131 311 307 308 313 +843 132 307 308 309 302 +844 133 307 308 309 314 +845 133 307 308 309 315 +846 134 312 308 309 302 +847 135 312 308 309 314 +848 135 312 308 309 315 +849 134 313 308 309 302 +850 135 313 308 309 314 +851 135 313 308 309 315 +852 26 304 316 317 318 +853 27 304 316 317 321 +854 28 304 316 317 322 +855 29 320 316 317 318 +856 30 320 316 317 321 +857 31 320 316 317 322 +858 32 316 317 318 319 +859 33 316 317 318 327 +860 136 316 317 322 323 +861 35 316 317 322 324 +862 35 316 317 322 325 +863 137 318 317 322 323 +864 9 318 317 322 324 +865 9 318 317 322 325 +866 10 321 317 318 319 +867 11 321 317 318 327 +868 138 321 317 322 323 +869 13 321 317 322 324 +870 13 321 317 322 325 +871 14 322 317 318 319 +872 15 322 317 318 327 +873 16 317 318 327 328 +874 17 317 318 327 331 +875 18 319 318 327 328 +876 19 319 318 327 331 +877 139 317 322 323 326 +878 140 324 322 323 326 +879 140 325 322 323 326 +880 26 318 327 328 329 +881 27 318 327 328 332 +882 28 318 327 328 333 +883 29 331 327 328 329 +884 30 331 327 328 332 +885 31 331 327 328 333 +886 32 327 328 329 330 +887 33 327 328 329 339 +888 141 327 328 333 334 +889 35 327 328 333 337 +890 35 327 328 333 338 +891 142 329 328 333 334 +892 9 329 328 333 337 +893 9 329 328 333 338 +894 10 332 328 329 330 +895 11 332 328 329 339 +896 143 332 328 333 334 +897 13 332 328 333 337 +898 13 332 328 333 338 +899 14 333 328 329 330 +900 15 333 328 329 339 +901 16 328 329 339 340 +902 17 328 329 339 343 +903 18 330 329 339 340 +904 19 330 329 339 343 +905 144 328 333 334 335 +906 144 328 333 334 336 +907 100 337 333 334 335 +908 100 337 333 334 336 +909 100 338 333 334 335 +910 100 338 333 334 336 +911 26 329 339 340 341 +912 27 329 339 340 344 +913 43 329 339 340 345 +914 29 343 339 340 341 +915 30 343 339 340 344 +916 44 343 339 340 345 +917 32 339 340 341 342 +918 33 339 340 341 353 +919 74 339 340 345 346 +920 45 339 340 345 347 +921 46 339 340 345 348 +922 75 341 340 345 346 +923 47 341 340 345 347 +924 48 341 340 345 348 +925 10 344 340 341 342 +926 11 344 340 341 353 +927 76 344 340 345 346 +928 49 344 340 345 347 +929 50 344 340 345 348 +930 51 345 340 341 342 +931 52 345 340 341 353 +932 16 340 341 353 354 +933 17 340 341 353 357 +934 18 342 341 353 354 +935 19 342 341 353 357 +936 77 340 345 346 349 +937 54 340 345 347 350 +938 54 340 345 347 351 +939 54 340 345 347 352 +940 78 346 345 347 350 +941 78 346 345 347 351 +942 78 346 345 347 352 +943 79 347 345 346 349 +944 80 348 345 346 349 +945 13 348 345 347 350 +946 13 348 345 347 351 +947 13 348 345 347 352 +948 26 341 353 354 355 +949 27 341 353 354 358 +950 43 341 353 354 359 +951 29 357 353 354 355 +952 30 357 353 354 358 +953 44 357 353 354 359 +954 32 353 354 355 356 +955 33 353 354 355 372 +956 45 353 354 359 360 +957 45 353 354 359 361 +958 46 353 354 359 363 +959 47 355 354 359 360 +960 47 355 354 359 361 +961 48 355 354 359 363 +962 10 358 354 355 356 +963 11 358 354 355 372 +964 49 358 354 359 360 +965 49 358 354 359 361 +966 50 358 354 359 363 +967 51 359 354 355 356 +968 52 359 354 355 372 +969 16 354 355 372 373 +970 17 354 355 372 376 +971 18 356 355 372 373 +972 19 356 355 372 376 +973 53 354 359 360 362 +974 54 354 359 360 364 +975 54 354 359 360 365 +976 54 354 359 361 366 +977 54 354 359 361 367 +978 54 354 359 361 368 +979 55 360 359 361 366 +980 55 360 359 361 367 +981 55 360 359 361 368 +982 56 361 359 360 362 +983 55 361 359 360 364 +984 55 361 359 360 365 +985 12 363 359 360 362 +986 13 363 359 360 364 +987 13 363 359 360 365 +988 13 363 359 361 366 +989 13 363 359 361 367 +990 13 363 359 361 368 +991 21 359 360 362 369 +992 21 359 360 362 370 +993 21 359 360 362 371 +994 23 364 360 362 369 +995 23 364 360 362 370 +996 23 364 360 362 371 +997 23 365 360 362 369 +998 23 365 360 362 370 +999 23 365 360 362 371 +1000 26 355 372 373 374 +1001 27 355 372 373 377 +1002 28 355 372 373 378 +1003 29 376 372 373 374 +1004 30 376 372 373 377 +1005 31 376 372 373 378 +1006 32 372 373 374 375 +1007 33 372 373 374 387 +1008 34 372 373 378 379 +1009 35 372 373 378 383 +1010 35 372 373 378 384 +1011 8 374 373 378 379 +1012 9 374 373 378 383 +1013 9 374 373 378 384 +1014 10 377 373 374 375 +1015 11 377 373 374 387 +1016 12 377 373 378 379 +1017 13 377 373 378 383 +1018 13 377 373 378 384 +1019 14 378 373 374 375 +1020 15 378 373 374 387 +1021 16 373 374 387 388 +1022 17 373 374 387 391 +1023 18 375 374 387 388 +1024 19 375 374 387 391 +1025 97 373 378 379 380 +1026 21 373 378 379 385 +1027 21 373 378 379 386 +1028 98 383 378 379 380 +1029 23 383 378 379 385 +1030 23 383 378 379 386 +1031 98 384 378 379 380 +1032 23 384 378 379 385 +1033 23 384 378 379 386 +1034 99 378 379 380 381 +1035 99 378 379 380 382 +1036 100 385 379 380 381 +1037 100 385 379 380 382 +1038 100 386 379 380 381 +1039 100 386 379 380 382 +1040 26 374 387 388 389 +1041 27 374 387 388 392 +1042 28 374 387 388 393 +1043 29 391 387 388 389 +1044 30 391 387 388 392 +1045 31 391 387 388 393 +1046 32 387 388 389 390 +1047 33 387 388 389 401 +1048 145 387 388 393 394 +1049 35 387 388 393 397 +1050 35 387 388 393 398 +1051 146 389 388 393 394 +1052 9 389 388 393 397 +1053 9 389 388 393 398 +1054 10 392 388 389 390 +1055 11 392 388 389 401 +1056 147 392 388 393 394 +1057 13 392 388 393 397 +1058 13 392 388 393 398 +1059 14 393 388 389 390 +1060 15 393 388 389 401 +1061 16 388 389 401 402 +1062 17 388 389 401 405 +1063 18 390 389 401 402 +1064 19 390 389 401 405 +1065 148 388 393 394 395 +1066 149 388 393 394 396 +1067 40 397 393 394 395 +1068 41 397 393 394 396 +1069 40 398 393 394 395 +1070 41 398 393 394 396 +1071 42 393 394 396 399 +1072 42 393 394 396 400 +1073 19 395 394 396 399 +1074 19 395 394 396 400 +1075 26 389 401 402 403 +1076 27 389 401 402 406 +1077 43 389 401 402 407 +1078 29 405 401 402 403 +1079 30 405 401 402 406 +1080 44 405 401 402 407 +1081 32 401 402 403 404 +1082 33 401 402 403 417 +1083 45 401 402 407 408 +1084 45 401 402 407 409 +1085 46 401 402 407 410 +1086 47 403 402 407 408 +1087 47 403 402 407 409 +1088 48 403 402 407 410 +1089 10 406 402 403 404 +1090 11 406 402 403 417 +1091 49 406 402 407 408 +1092 49 406 402 407 409 +1093 50 406 402 407 410 +1094 51 407 402 403 404 +1095 52 407 402 403 417 +1096 16 402 403 417 418 +1097 17 402 403 417 421 +1098 18 404 403 417 418 +1099 19 404 403 417 421 +1100 54 402 407 408 411 +1101 54 402 407 408 412 +1102 54 402 407 408 413 +1103 54 402 407 409 414 +1104 54 402 407 409 415 +1105 54 402 407 409 416 +1106 55 408 407 409 414 +1107 55 408 407 409 415 +1108 55 408 407 409 416 +1109 55 409 407 408 411 +1110 55 409 407 408 412 +1111 55 409 407 408 413 +1112 13 410 407 408 411 +1113 13 410 407 408 412 +1114 13 410 407 408 413 +1115 13 410 407 409 414 +1116 13 410 407 409 415 +1117 13 410 407 409 416 +1118 26 403 417 418 419 +1119 27 403 417 418 422 +1120 28 403 417 418 423 +1121 29 421 417 418 419 +1122 30 421 417 418 422 +1123 31 421 417 418 423 +1124 32 417 418 419 420 +1125 33 417 418 419 439 +1126 34 417 418 423 424 +1127 35 417 418 423 428 +1128 35 417 418 423 429 +1129 8 419 418 423 424 +1130 9 419 418 423 428 +1131 9 419 418 423 429 +1132 10 422 418 419 420 +1133 11 422 418 419 439 +1134 12 422 418 423 424 +1135 13 422 418 423 428 +1136 13 422 418 423 429 +1137 14 423 418 419 420 +1138 15 423 418 419 439 +1139 16 418 419 439 440 +1140 17 418 419 439 443 +1141 18 420 419 439 440 +1142 19 420 419 439 443 +1143 67 418 423 424 425 +1144 21 418 423 424 430 +1145 21 418 423 424 431 +1146 68 428 423 424 425 +1147 23 428 423 424 430 +1148 23 428 423 424 431 +1149 68 429 423 424 425 +1150 23 429 423 424 430 +1151 23 429 423 424 431 +1152 69 423 424 425 426 +1153 68 423 424 425 432 +1154 68 423 424 425 433 +1155 68 430 424 425 426 +1156 23 430 424 425 432 +1157 23 430 424 425 433 +1158 68 431 424 425 426 +1159 23 431 424 425 432 +1160 23 431 424 425 433 +1161 70 424 425 426 427 +1162 68 424 425 426 434 +1163 68 424 425 426 435 +1164 71 432 425 426 427 +1165 23 432 425 426 434 +1166 23 432 425 426 435 +1167 71 433 425 426 427 +1168 23 433 425 426 434 +1169 23 433 425 426 435 +1170 72 425 426 427 436 +1171 72 425 426 427 437 +1172 72 425 426 427 438 +1173 73 434 426 427 436 +1174 73 434 426 427 437 +1175 73 434 426 427 438 +1176 73 435 426 427 436 +1177 73 435 426 427 437 +1178 73 435 426 427 438 +1179 26 419 439 440 441 +1180 27 419 439 440 444 +1181 28 419 439 440 445 +1182 29 443 439 440 441 +1183 30 443 439 440 444 +1184 31 443 439 440 445 +1185 32 439 440 441 442 +1186 33 439 440 441 449 +1187 35 439 440 445 446 +1188 35 439 440 445 447 +1189 35 439 440 445 448 +1190 9 441 440 445 446 +1191 9 441 440 445 447 +1192 9 441 440 445 448 +1193 10 444 440 441 442 +1194 11 444 440 441 449 +1195 13 444 440 445 446 +1196 13 444 440 445 447 +1197 13 444 440 445 448 +1198 14 445 440 441 442 +1199 15 445 440 441 449 +1200 16 440 441 449 450 +1201 17 440 441 449 453 +1202 18 442 441 449 450 +1203 19 442 441 449 453 +1204 26 441 449 450 451 +1205 27 441 449 450 454 +1206 28 441 449 450 455 +1207 29 453 449 450 451 +1208 30 453 449 450 454 +1209 31 453 449 450 455 +1210 32 449 450 451 452 +1211 33 449 450 451 471 +1212 34 449 450 455 456 +1213 35 449 450 455 460 +1214 35 449 450 455 461 +1215 8 451 450 455 456 +1216 9 451 450 455 460 +1217 9 451 450 455 461 +1218 10 454 450 451 452 +1219 11 454 450 451 471 +1220 12 454 450 455 456 +1221 13 454 450 455 460 +1222 13 454 450 455 461 +1223 14 455 450 451 452 +1224 15 455 450 451 471 +1225 16 450 451 471 472 +1226 17 450 451 471 475 +1227 18 452 451 471 472 +1228 19 452 451 471 475 +1229 67 450 455 456 457 +1230 21 450 455 456 462 +1231 21 450 455 456 463 +1232 68 460 455 456 457 +1233 23 460 455 456 462 +1234 23 460 455 456 463 +1235 68 461 455 456 457 +1236 23 461 455 456 462 +1237 23 461 455 456 463 +1238 69 455 456 457 458 +1239 68 455 456 457 464 +1240 68 455 456 457 465 +1241 68 462 456 457 458 +1242 23 462 456 457 464 +1243 23 462 456 457 465 +1244 68 463 456 457 458 +1245 23 463 456 457 464 +1246 23 463 456 457 465 +1247 70 456 457 458 459 +1248 68 456 457 458 466 +1249 68 456 457 458 467 +1250 71 464 457 458 459 +1251 23 464 457 458 466 +1252 23 464 457 458 467 +1253 71 465 457 458 459 +1254 23 465 457 458 466 +1255 23 465 457 458 467 +1256 72 457 458 459 468 +1257 72 457 458 459 469 +1258 72 457 458 459 470 +1259 73 466 458 459 468 +1260 73 466 458 459 469 +1261 73 466 458 459 470 +1262 73 467 458 459 468 +1263 73 467 458 459 469 +1264 73 467 458 459 470 +1265 26 451 471 472 473 +1266 27 451 471 472 476 +1267 43 451 471 472 477 +1268 29 475 471 472 473 +1269 30 475 471 472 476 +1270 44 475 471 472 477 +1271 32 471 472 473 474 +1272 33 471 472 473 490 +1273 45 471 472 477 478 +1274 45 471 472 477 479 +1275 46 471 472 477 481 +1276 47 473 472 477 478 +1277 47 473 472 477 479 +1278 48 473 472 477 481 +1279 10 476 472 473 474 +1280 11 476 472 473 490 +1281 49 476 472 477 478 +1282 49 476 472 477 479 +1283 50 476 472 477 481 +1284 51 477 472 473 474 +1285 52 477 472 473 490 +1286 16 472 473 490 491 +1287 17 472 473 490 494 +1288 18 474 473 490 491 +1289 19 474 473 490 494 +1290 53 472 477 478 480 +1291 54 472 477 478 482 +1292 54 472 477 478 483 +1293 54 472 477 479 484 +1294 54 472 477 479 485 +1295 54 472 477 479 486 +1296 55 478 477 479 484 +1297 55 478 477 479 485 +1298 55 478 477 479 486 +1299 56 479 477 478 480 +1300 55 479 477 478 482 +1301 55 479 477 478 483 +1302 12 481 477 478 480 +1303 13 481 477 478 482 +1304 13 481 477 478 483 +1305 13 481 477 479 484 +1306 13 481 477 479 485 +1307 13 481 477 479 486 +1308 21 477 478 480 487 +1309 21 477 478 480 488 +1310 21 477 478 480 489 +1311 23 482 478 480 487 +1312 23 482 478 480 488 +1313 23 482 478 480 489 +1314 23 483 478 480 487 +1315 23 483 478 480 488 +1316 23 483 478 480 489 +1317 26 473 490 491 492 +1318 27 473 490 491 495 +1319 28 473 490 491 496 +1320 29 494 490 491 492 +1321 30 494 490 491 495 +1322 31 494 490 491 496 +1323 32 490 491 492 493 +1324 33 490 491 492 507 +1325 34 490 491 496 497 +1326 35 490 491 496 501 +1327 35 490 491 496 502 +1328 8 492 491 496 497 +1329 9 492 491 496 501 +1330 9 492 491 496 502 +1331 10 495 491 492 493 +1332 11 495 491 492 507 +1333 12 495 491 496 497 +1334 13 495 491 496 501 +1335 13 495 491 496 502 +1336 14 496 491 492 493 +1337 15 496 491 492 507 +1338 16 491 492 507 508 +1339 17 491 492 507 511 +1340 18 493 492 507 508 +1341 19 493 492 507 511 +1342 36 491 496 497 498 +1343 21 491 496 497 503 +1344 21 491 496 497 504 +1345 37 501 496 497 498 +1346 23 501 496 497 503 +1347 23 501 496 497 504 +1348 37 502 496 497 498 +1349 23 502 496 497 503 +1350 23 502 496 497 504 +1351 38 496 497 498 499 +1352 39 496 497 498 500 +1353 40 503 497 498 499 +1354 41 503 497 498 500 +1355 40 504 497 498 499 +1356 41 504 497 498 500 +1357 42 497 498 500 505 +1358 42 497 498 500 506 +1359 19 499 498 500 505 +1360 19 499 498 500 506 +1361 26 492 507 508 509 +1362 27 492 507 508 512 +1363 28 492 507 508 513 +1364 29 511 507 508 509 +1365 30 511 507 508 512 +1366 31 511 507 508 513 +1367 32 507 508 509 510 +1368 33 507 508 509 519 +1369 141 507 508 513 514 +1370 35 507 508 513 517 +1371 35 507 508 513 518 +1372 142 509 508 513 514 +1373 9 509 508 513 517 +1374 9 509 508 513 518 +1375 10 512 508 509 510 +1376 11 512 508 509 519 +1377 143 512 508 513 514 +1378 13 512 508 513 517 +1379 13 512 508 513 518 +1380 14 513 508 509 510 +1381 15 513 508 509 519 +1382 16 508 509 519 520 +1383 17 508 509 519 523 +1384 18 510 509 519 520 +1385 19 510 509 519 523 +1386 144 508 513 514 515 +1387 144 508 513 514 516 +1388 100 517 513 514 515 +1389 100 517 513 514 516 +1390 100 518 513 514 515 +1391 100 518 513 514 516 +1392 26 509 519 520 521 +1393 27 509 519 520 524 +1394 28 509 519 520 525 +1395 29 523 519 520 521 +1396 30 523 519 520 524 +1397 31 523 519 520 525 +1398 32 519 520 521 522 +1399 33 519 520 521 541 +1400 34 519 520 525 526 +1401 35 519 520 525 530 +1402 35 519 520 525 531 +1403 8 521 520 525 526 +1404 9 521 520 525 530 +1405 9 521 520 525 531 +1406 10 524 520 521 522 +1407 11 524 520 521 541 +1408 12 524 520 525 526 +1409 13 524 520 525 530 +1410 13 524 520 525 531 +1411 14 525 520 521 522 +1412 15 525 520 521 541 +1413 16 520 521 541 542 +1414 17 520 521 541 545 +1415 18 522 521 541 542 +1416 19 522 521 541 545 +1417 67 520 525 526 527 +1418 21 520 525 526 532 +1419 21 520 525 526 533 +1420 68 530 525 526 527 +1421 23 530 525 526 532 +1422 23 530 525 526 533 +1423 68 531 525 526 527 +1424 23 531 525 526 532 +1425 23 531 525 526 533 +1426 69 525 526 527 528 +1427 68 525 526 527 534 +1428 68 525 526 527 535 +1429 68 532 526 527 528 +1430 23 532 526 527 534 +1431 23 532 526 527 535 +1432 68 533 526 527 528 +1433 23 533 526 527 534 +1434 23 533 526 527 535 +1435 70 526 527 528 529 +1436 68 526 527 528 536 +1437 68 526 527 528 537 +1438 71 534 527 528 529 +1439 23 534 527 528 536 +1440 23 534 527 528 537 +1441 71 535 527 528 529 +1442 23 535 527 528 536 +1443 23 535 527 528 537 +1444 72 527 528 529 538 +1445 72 527 528 529 539 +1446 72 527 528 529 540 +1447 73 536 528 529 538 +1448 73 536 528 529 539 +1449 73 536 528 529 540 +1450 73 537 528 529 538 +1451 73 537 528 529 539 +1452 73 537 528 529 540 +1453 26 521 541 542 543 +1454 27 521 541 542 546 +1455 28 521 541 542 547 +1456 29 545 541 542 543 +1457 30 545 541 542 546 +1458 31 545 541 542 547 +1459 32 541 542 543 544 +1460 33 541 542 543 556 +1461 34 541 542 547 548 +1462 35 541 542 547 552 +1463 35 541 542 547 553 +1464 8 543 542 547 548 +1465 9 543 542 547 552 +1466 9 543 542 547 553 +1467 10 546 542 543 544 +1468 11 546 542 543 556 +1469 12 546 542 547 548 +1470 13 546 542 547 552 +1471 13 546 542 547 553 +1472 14 547 542 543 544 +1473 15 547 542 543 556 +1474 85 542 543 556 557 +1475 17 542 543 556 560 +1476 86 544 543 556 557 +1477 19 544 543 556 560 +1478 97 542 547 548 549 +1479 21 542 547 548 554 +1480 21 542 547 548 555 +1481 98 552 547 548 549 +1482 23 552 547 548 554 +1483 23 552 547 548 555 +1484 98 553 547 548 549 +1485 23 553 547 548 554 +1486 23 553 547 548 555 +1487 99 547 548 549 550 +1488 99 547 548 549 551 +1489 100 554 548 549 550 +1490 100 554 548 549 551 +1491 100 555 548 549 550 +1492 100 555 548 549 551 +1493 87 543 556 557 558 +1494 88 543 556 557 561 +1495 88 543 556 557 562 +1496 89 560 556 557 558 +1497 90 560 556 557 561 +1498 90 560 556 557 562 +1499 91 556 557 558 559 +1500 92 556 557 558 563 +1501 93 561 557 558 559 +1502 94 561 557 558 563 +1503 93 562 557 558 559 +1504 94 562 557 558 563 +1505 95 557 558 563 564 +1506 96 557 558 563 567 +1507 18 559 558 563 564 +1508 19 559 558 563 567 +1509 26 558 563 564 565 +1510 27 558 563 564 568 +1511 43 558 563 564 569 +1512 29 567 563 564 565 +1513 30 567 563 564 568 +1514 44 567 563 564 569 +1515 32 563 564 565 566 +1516 101 563 564 565 582 +1517 45 563 564 569 570 +1518 45 563 564 569 571 +1519 46 563 564 569 573 +1520 47 565 564 569 570 +1521 47 565 564 569 571 +1522 48 565 564 569 573 +1523 10 568 564 565 566 +1524 102 568 564 565 582 +1525 49 568 564 569 570 +1526 49 568 564 569 571 +1527 50 568 564 569 573 +1528 51 569 564 565 566 +1529 150 569 564 565 582 +1530 104 564 565 582 583 +1531 105 564 565 582 589 +1532 106 566 565 582 583 +1533 107 566 565 582 589 +1534 53 564 569 570 572 +1535 54 564 569 570 574 +1536 54 564 569 570 575 +1537 54 564 569 571 576 +1538 54 564 569 571 577 +1539 54 564 569 571 578 +1540 55 570 569 571 576 +1541 55 570 569 571 577 +1542 55 570 569 571 578 +1543 56 571 569 570 572 +1544 55 571 569 570 574 +1545 55 571 569 570 575 +1546 12 573 569 570 572 +1547 13 573 569 570 574 +1548 13 573 569 570 575 +1549 13 573 569 571 576 +1550 13 573 569 571 577 +1551 13 573 569 571 578 +1552 21 569 570 572 579 +1553 21 569 570 572 580 +1554 21 569 570 572 581 +1555 23 574 570 572 579 +1556 23 574 570 572 580 +1557 23 574 570 572 581 +1558 23 575 570 572 579 +1559 23 575 570 572 580 +1560 23 575 570 572 581 +1561 108 565 582 583 584 +1562 109 565 582 583 586 +1563 110 565 582 583 587 +1564 111 565 582 589 588 +1565 112 565 582 589 594 +1566 112 565 582 589 595 +1567 113 583 582 589 588 +1568 114 583 582 589 594 +1569 114 583 582 589 595 +1570 115 589 582 583 584 +1571 116 589 582 583 586 +1572 117 589 582 583 587 +1573 118 582 583 584 585 +1574 151 582 583 584 596 +1575 120 582 583 587 588 +1576 121 582 583 587 590 +1577 121 582 583 587 591 +1578 122 584 583 587 588 +1579 123 584 583 587 590 +1580 123 584 583 587 591 +1581 10 586 583 584 585 +1582 102 586 583 584 596 +1583 124 586 583 587 588 +1584 125 586 583 587 590 +1585 125 586 583 587 591 +1586 126 587 583 584 585 +1587 152 587 583 584 596 +1588 104 583 584 596 597 +1589 105 583 584 596 603 +1590 106 585 584 596 597 +1591 107 585 584 596 603 +1592 128 583 587 588 589 +1593 129 583 587 588 592 +1594 129 583 587 588 593 +1595 130 590 587 588 589 +1596 131 590 587 588 592 +1597 131 590 587 588 593 +1598 130 591 587 588 589 +1599 131 591 587 588 592 +1600 131 591 587 588 593 +1601 132 587 588 589 582 +1602 133 587 588 589 594 +1603 133 587 588 589 595 +1604 134 592 588 589 582 +1605 135 592 588 589 594 +1606 135 592 588 589 595 +1607 134 593 588 589 582 +1608 135 593 588 589 594 +1609 135 593 588 589 595 +1610 108 584 596 597 598 +1611 109 584 596 597 600 +1612 110 584 596 597 601 +1613 111 584 596 603 602 +1614 112 584 596 603 608 +1615 112 584 596 603 609 +1616 113 597 596 603 602 +1617 114 597 596 603 608 +1618 114 597 596 603 609 +1619 115 603 596 597 598 +1620 116 603 596 597 600 +1621 117 603 596 597 601 +1622 118 596 597 598 599 +1623 119 596 597 598 610 +1624 120 596 597 601 602 +1625 121 596 597 601 604 +1626 121 596 597 601 605 +1627 122 598 597 601 602 +1628 123 598 597 601 604 +1629 123 598 597 601 605 +1630 10 600 597 598 599 +1631 11 600 597 598 610 +1632 124 600 597 601 602 +1633 125 600 597 601 604 +1634 125 600 597 601 605 +1635 126 601 597 598 599 +1636 127 601 597 598 610 +1637 16 597 598 610 611 +1638 17 597 598 610 614 +1639 18 599 598 610 611 +1640 19 599 598 610 614 +1641 128 597 601 602 603 +1642 129 597 601 602 606 +1643 129 597 601 602 607 +1644 130 604 601 602 603 +1645 131 604 601 602 606 +1646 131 604 601 602 607 +1647 130 605 601 602 603 +1648 131 605 601 602 606 +1649 131 605 601 602 607 +1650 132 601 602 603 596 +1651 133 601 602 603 608 +1652 133 601 602 603 609 +1653 134 606 602 603 596 +1654 135 606 602 603 608 +1655 135 606 602 603 609 +1656 134 607 602 603 596 +1657 135 607 602 603 608 +1658 135 607 602 603 609 +1659 26 598 610 611 612 +1660 27 598 610 611 615 +1661 28 598 610 611 616 +1662 29 614 610 611 612 +1663 30 614 610 611 615 +1664 31 614 610 611 616 +1665 32 610 611 612 613 +1666 33 610 611 612 622 +1667 141 610 611 616 617 +1668 35 610 611 616 620 +1669 35 610 611 616 621 +1670 142 612 611 616 617 +1671 9 612 611 616 620 +1672 9 612 611 616 621 +1673 10 615 611 612 613 +1674 11 615 611 612 622 +1675 143 615 611 616 617 +1676 13 615 611 616 620 +1677 13 615 611 616 621 +1678 14 616 611 612 613 +1679 15 616 611 612 622 +1680 16 611 612 622 623 +1681 17 611 612 622 626 +1682 18 613 612 622 623 +1683 19 613 612 622 626 +1684 144 611 616 617 618 +1685 144 611 616 617 619 +1686 100 620 616 617 618 +1687 100 620 616 617 619 +1688 100 621 616 617 618 +1689 100 621 616 617 619 +1690 26 612 622 623 624 +1691 27 612 622 623 627 +1692 28 612 622 623 628 +1693 29 626 622 623 624 +1694 30 626 622 623 627 +1695 31 626 622 623 628 +1696 32 622 623 624 625 +1697 33 622 623 624 639 +1698 34 622 623 628 629 +1699 35 622 623 628 633 +1700 35 622 623 628 634 +1701 8 624 623 628 629 +1702 9 624 623 628 633 +1703 9 624 623 628 634 +1704 10 627 623 624 625 +1705 11 627 623 624 639 +1706 12 627 623 628 629 +1707 13 627 623 628 633 +1708 13 627 623 628 634 +1709 14 628 623 624 625 +1710 15 628 623 624 639 +1711 16 623 624 639 640 +1712 17 623 624 639 643 +1713 18 625 624 639 640 +1714 19 625 624 639 643 +1715 36 623 628 629 630 +1716 21 623 628 629 635 +1717 21 623 628 629 636 +1718 37 633 628 629 630 +1719 23 633 628 629 635 +1720 23 633 628 629 636 +1721 37 634 628 629 630 +1722 23 634 628 629 635 +1723 23 634 628 629 636 +1724 38 628 629 630 631 +1725 39 628 629 630 632 +1726 40 635 629 630 631 +1727 41 635 629 630 632 +1728 40 636 629 630 631 +1729 41 636 629 630 632 +1730 42 629 630 632 637 +1731 42 629 630 632 638 +1732 19 631 630 632 637 +1733 19 631 630 632 638 +1734 26 624 639 640 641 +1735 27 624 639 640 644 +1736 28 624 639 640 645 +1737 29 643 639 640 641 +1738 30 643 639 640 644 +1739 31 643 639 640 645 +1740 32 639 640 641 642 +1741 33 639 640 641 656 +1742 34 639 640 645 646 +1743 35 639 640 645 650 +1744 35 639 640 645 651 +1745 8 641 640 645 646 +1746 9 641 640 645 650 +1747 9 641 640 645 651 +1748 10 644 640 641 642 +1749 11 644 640 641 656 +1750 12 644 640 645 646 +1751 13 644 640 645 650 +1752 13 644 640 645 651 +1753 14 645 640 641 642 +1754 15 645 640 641 656 +1755 16 640 641 656 657 +1756 17 640 641 656 660 +1757 18 642 641 656 657 +1758 19 642 641 656 660 +1759 36 640 645 646 647 +1760 21 640 645 646 652 +1761 21 640 645 646 653 +1762 37 650 645 646 647 +1763 23 650 645 646 652 +1764 23 650 645 646 653 +1765 37 651 645 646 647 +1766 23 651 645 646 652 +1767 23 651 645 646 653 +1768 38 645 646 647 648 +1769 39 645 646 647 649 +1770 40 652 646 647 648 +1771 41 652 646 647 649 +1772 40 653 646 647 648 +1773 41 653 646 647 649 +1774 42 646 647 649 654 +1775 42 646 647 649 655 +1776 19 648 647 649 654 +1777 19 648 647 649 655 +1778 26 641 656 657 658 +1779 27 641 656 657 661 +1780 28 641 656 657 662 +1781 29 660 656 657 658 +1782 30 660 656 657 661 +1783 31 660 656 657 662 +1784 32 656 657 658 659 +1785 33 656 657 658 680 +1786 34 656 657 662 663 +1787 35 656 657 662 669 +1788 35 656 657 662 670 +1789 8 658 657 662 663 +1790 9 658 657 662 669 +1791 9 658 657 662 670 +1792 10 661 657 658 659 +1793 11 661 657 658 680 +1794 12 661 657 662 663 +1795 13 661 657 662 669 +1796 13 661 657 662 670 +1797 14 662 657 658 659 +1798 15 662 657 658 680 +1799 16 657 658 680 681 +1800 17 657 658 680 684 +1801 18 659 658 680 681 +1802 19 659 658 680 684 +1803 67 657 662 663 664 +1804 21 657 662 663 671 +1805 21 657 662 663 672 +1806 68 669 662 663 664 +1807 23 669 662 663 671 +1808 23 669 662 663 672 +1809 68 670 662 663 664 +1810 23 670 662 663 671 +1811 23 670 662 663 672 +1812 153 662 663 664 665 +1813 68 662 663 664 673 +1814 68 662 663 664 674 +1815 154 671 663 664 665 +1816 23 671 663 664 673 +1817 23 671 663 664 674 +1818 154 672 663 664 665 +1819 23 672 663 664 673 +1820 23 672 663 664 674 +1821 155 663 664 665 666 +1822 156 663 664 665 675 +1823 157 673 664 665 666 +1824 158 673 664 665 675 +1825 157 674 664 665 666 +1826 158 674 664 665 675 +1827 159 664 665 666 667 +1828 159 664 665 666 668 +1829 160 675 665 666 667 +1830 160 675 665 666 668 +1831 160 665 666 667 676 +1832 160 665 666 667 677 +1833 160 665 666 668 678 +1834 160 665 666 668 679 +1835 160 667 666 668 678 +1836 160 667 666 668 679 +1837 160 668 666 667 676 +1838 160 668 666 667 677 +1839 26 658 680 681 682 +1840 27 658 680 681 685 +1841 28 658 680 681 686 +1842 29 684 680 681 682 +1843 30 684 680 681 685 +1844 31 684 680 681 686 +1845 32 680 681 682 683 +1846 33 680 681 682 699 +1847 81 680 681 686 687 +1848 35 680 681 686 690 +1849 35 680 681 686 691 +1850 82 682 681 686 687 +1851 9 682 681 686 690 +1852 9 682 681 686 691 +1853 10 685 681 682 683 +1854 11 685 681 682 699 +1855 83 685 681 686 687 +1856 13 685 681 686 690 +1857 13 685 681 686 691 +1858 14 686 681 682 683 +1859 15 686 681 682 699 +1860 16 681 682 699 700 +1861 17 681 682 699 703 +1862 18 683 682 699 700 +1863 19 683 682 699 703 +1864 84 681 686 687 688 +1865 84 681 686 687 689 +1866 83 681 686 687 692 +1867 55 690 686 687 688 +1868 55 690 686 687 689 +1869 13 690 686 687 692 +1870 55 691 686 687 688 +1871 55 691 686 687 689 +1872 13 691 686 687 692 +1873 55 686 687 688 693 +1874 55 686 687 688 694 +1875 55 686 687 688 695 +1876 55 686 687 689 696 +1877 55 686 687 689 697 +1878 55 686 687 689 698 +1879 55 688 687 689 696 +1880 55 688 687 689 697 +1881 55 688 687 689 698 +1882 55 689 687 688 693 +1883 55 689 687 688 694 +1884 55 689 687 688 695 +1885 13 692 687 688 693 +1886 13 692 687 688 694 +1887 13 692 687 688 695 +1888 13 692 687 689 696 +1889 13 692 687 689 697 +1890 13 692 687 689 698 +1891 26 682 699 700 701 +1892 27 682 699 700 704 +1893 43 682 699 700 705 +1894 29 703 699 700 701 +1895 30 703 699 700 704 +1896 44 703 699 700 705 +1897 32 699 700 701 702 +1898 33 699 700 701 718 +1899 45 699 700 705 706 +1900 45 699 700 705 707 +1901 46 699 700 705 709 +1902 47 701 700 705 706 +1903 47 701 700 705 707 +1904 48 701 700 705 709 +1905 10 704 700 701 702 +1906 11 704 700 701 718 +1907 49 704 700 705 706 +1908 49 704 700 705 707 +1909 50 704 700 705 709 +1910 51 705 700 701 702 +1911 52 705 700 701 718 +1912 16 700 701 718 719 +1913 17 700 701 718 722 +1914 18 702 701 718 719 +1915 19 702 701 718 722 +1916 53 700 705 706 708 +1917 54 700 705 706 710 +1918 54 700 705 706 711 +1919 54 700 705 707 712 +1920 54 700 705 707 713 +1921 54 700 705 707 714 +1922 55 706 705 707 712 +1923 55 706 705 707 713 +1924 55 706 705 707 714 +1925 56 707 705 706 708 +1926 55 707 705 706 710 +1927 55 707 705 706 711 +1928 12 709 705 706 708 +1929 13 709 705 706 710 +1930 13 709 705 706 711 +1931 13 709 705 707 712 +1932 13 709 705 707 713 +1933 13 709 705 707 714 +1934 21 705 706 708 715 +1935 21 705 706 708 716 +1936 21 705 706 708 717 +1937 23 710 706 708 715 +1938 23 710 706 708 716 +1939 23 710 706 708 717 +1940 23 711 706 708 715 +1941 23 711 706 708 716 +1942 23 711 706 708 717 +1943 26 701 718 719 720 +1944 27 701 718 719 723 +1945 28 701 718 719 724 +1946 29 722 718 719 720 +1947 30 722 718 719 723 +1948 31 722 718 719 724 +1949 32 718 719 720 721 +1950 33 718 719 720 738 +1951 57 718 719 724 725 +1952 35 718 719 724 731 +1953 35 718 719 724 732 +1954 58 720 719 724 725 +1955 9 720 719 724 731 +1956 9 720 719 724 732 +1957 10 723 719 720 721 +1958 11 723 719 720 738 +1959 59 723 719 724 725 +1960 13 723 719 724 731 +1961 13 723 719 724 732 +1962 14 724 719 720 721 +1963 15 724 719 720 738 +1964 16 719 720 738 739 +1965 17 719 720 738 742 +1966 18 721 720 738 739 +1967 19 721 720 738 742 +1968 60 719 724 725 726 +1969 60 719 724 725 727 +1970 61 731 724 725 726 +1971 61 731 724 725 727 +1972 61 732 724 725 726 +1973 61 732 724 725 727 +1974 62 724 725 726 728 +1975 63 724 725 726 733 +1976 62 724 725 727 729 +1977 63 724 725 727 734 +1978 64 726 725 727 729 +1979 65 726 725 727 734 +1980 64 727 725 726 728 +1981 65 727 725 726 733 +1982 64 725 726 728 730 +1983 65 725 726 728 735 +1984 65 733 726 728 730 +1985 66 733 726 728 735 +1986 64 725 727 729 730 +1987 65 725 727 729 736 +1988 65 734 727 729 730 +1989 66 734 727 729 736 +1990 64 726 728 730 729 +1991 65 726 728 730 737 +1992 65 735 728 730 729 +1993 66 735 728 730 737 +1994 64 727 729 730 728 +1995 65 727 729 730 737 +1996 65 736 729 730 728 +1997 66 736 729 730 737 +1998 26 720 738 739 740 +1999 27 720 738 739 743 +2000 28 720 738 739 744 +2001 29 742 738 739 740 +2002 30 742 738 739 743 +2003 31 742 738 739 744 +2004 32 738 739 740 741 +2005 33 738 739 740 748 +2006 35 738 739 744 745 +2007 35 738 739 744 746 +2008 35 738 739 744 747 +2009 9 740 739 744 745 +2010 9 740 739 744 746 +2011 9 740 739 744 747 +2012 10 743 739 740 741 +2013 11 743 739 740 748 +2014 13 743 739 744 745 +2015 13 743 739 744 746 +2016 13 743 739 744 747 +2017 14 744 739 740 741 +2018 15 744 739 740 748 +2019 85 739 740 748 749 +2020 17 739 740 748 752 +2021 86 741 740 748 749 +2022 19 741 740 748 752 +2023 87 740 748 749 750 +2024 88 740 748 749 753 +2025 88 740 748 749 754 +2026 89 752 748 749 750 +2027 90 752 748 749 753 +2028 90 752 748 749 754 +2029 91 748 749 750 751 +2030 92 748 749 750 755 +2031 93 753 749 750 751 +2032 94 753 749 750 755 +2033 93 754 749 750 751 +2034 94 754 749 750 755 +2035 95 749 750 755 756 +2036 96 749 750 755 759 +2037 18 751 750 755 756 +2038 19 751 750 755 759 +2039 26 750 755 756 757 +2040 27 750 755 756 760 +2041 28 750 755 756 761 +2042 29 759 755 756 757 +2043 30 759 755 756 760 +2044 31 759 755 756 761 +2045 32 755 756 757 758 +2046 33 755 756 757 777 +2047 34 755 756 761 762 +2048 35 755 756 761 766 +2049 35 755 756 761 767 +2050 8 757 756 761 762 +2051 9 757 756 761 766 +2052 9 757 756 761 767 +2053 10 760 756 757 758 +2054 11 760 756 757 777 +2055 12 760 756 761 762 +2056 13 760 756 761 766 +2057 13 760 756 761 767 +2058 14 761 756 757 758 +2059 15 761 756 757 777 +2060 16 756 757 777 778 +2061 17 756 757 777 781 +2062 18 758 757 777 778 +2063 19 758 757 777 781 +2064 67 756 761 762 763 +2065 21 756 761 762 768 +2066 21 756 761 762 769 +2067 68 766 761 762 763 +2068 23 766 761 762 768 +2069 23 766 761 762 769 +2070 68 767 761 762 763 +2071 23 767 761 762 768 +2072 23 767 761 762 769 +2073 69 761 762 763 764 +2074 68 761 762 763 770 +2075 68 761 762 763 771 +2076 68 768 762 763 764 +2077 23 768 762 763 770 +2078 23 768 762 763 771 +2079 68 769 762 763 764 +2080 23 769 762 763 770 +2081 23 769 762 763 771 +2082 70 762 763 764 765 +2083 68 762 763 764 772 +2084 68 762 763 764 773 +2085 71 770 763 764 765 +2086 23 770 763 764 772 +2087 23 770 763 764 773 +2088 71 771 763 764 765 +2089 23 771 763 764 772 +2090 23 771 763 764 773 +2091 72 763 764 765 774 +2092 72 763 764 765 775 +2093 72 763 764 765 776 +2094 73 772 764 765 774 +2095 73 772 764 765 775 +2096 73 772 764 765 776 +2097 73 773 764 765 774 +2098 73 773 764 765 775 +2099 73 773 764 765 776 +2100 26 757 777 778 779 +2101 27 757 777 778 782 +2102 28 757 777 778 783 +2103 29 781 777 778 779 +2104 30 781 777 778 782 +2105 31 781 777 778 783 +2106 32 777 778 779 780 +2107 33 777 778 779 794 +2108 34 777 778 783 784 +2109 35 777 778 783 788 +2110 35 777 778 783 789 +2111 8 779 778 783 784 +2112 9 779 778 783 788 +2113 9 779 778 783 789 +2114 10 782 778 779 780 +2115 11 782 778 779 794 +2116 12 782 778 783 784 +2117 13 782 778 783 788 +2118 13 782 778 783 789 +2119 14 783 778 779 780 +2120 15 783 778 779 794 +2121 16 778 779 794 795 +2122 17 778 779 794 798 +2123 18 780 779 794 795 +2124 19 780 779 794 798 +2125 36 778 783 784 785 +2126 21 778 783 784 790 +2127 21 778 783 784 791 +2128 37 788 783 784 785 +2129 23 788 783 784 790 +2130 23 788 783 784 791 +2131 37 789 783 784 785 +2132 23 789 783 784 790 +2133 23 789 783 784 791 +2134 38 783 784 785 786 +2135 39 783 784 785 787 +2136 40 790 784 785 786 +2137 41 790 784 785 787 +2138 40 791 784 785 786 +2139 41 791 784 785 787 +2140 42 784 785 787 792 +2141 42 784 785 787 793 +2142 19 786 785 787 792 +2143 19 786 785 787 793 +2144 26 779 794 795 796 +2145 27 779 794 795 799 +2146 28 779 794 795 800 +2147 29 798 794 795 796 +2148 30 798 794 795 799 +2149 31 798 794 795 800 +2150 32 794 795 796 797 +2151 33 794 795 796 813 +2152 81 794 795 800 801 +2153 35 794 795 800 804 +2154 35 794 795 800 805 +2155 82 796 795 800 801 +2156 9 796 795 800 804 +2157 9 796 795 800 805 +2158 10 799 795 796 797 +2159 11 799 795 796 813 +2160 83 799 795 800 801 +2161 13 799 795 800 804 +2162 13 799 795 800 805 +2163 14 800 795 796 797 +2164 15 800 795 796 813 +2165 16 795 796 813 814 +2166 17 795 796 813 817 +2167 18 797 796 813 814 +2168 19 797 796 813 817 +2169 84 795 800 801 802 +2170 84 795 800 801 803 +2171 83 795 800 801 806 +2172 55 804 800 801 802 +2173 55 804 800 801 803 +2174 13 804 800 801 806 +2175 55 805 800 801 802 +2176 55 805 800 801 803 +2177 13 805 800 801 806 +2178 55 800 801 802 807 +2179 55 800 801 802 808 +2180 55 800 801 802 809 +2181 55 800 801 803 810 +2182 55 800 801 803 811 +2183 55 800 801 803 812 +2184 55 802 801 803 810 +2185 55 802 801 803 811 +2186 55 802 801 803 812 +2187 55 803 801 802 807 +2188 55 803 801 802 808 +2189 55 803 801 802 809 +2190 13 806 801 802 807 +2191 13 806 801 802 808 +2192 13 806 801 802 809 +2193 13 806 801 803 810 +2194 13 806 801 803 811 +2195 13 806 801 803 812 +2196 26 796 813 814 815 +2197 27 796 813 814 818 +2198 28 796 813 814 819 +2199 29 817 813 814 815 +2200 30 817 813 814 818 +2201 31 817 813 814 819 +2202 32 813 814 815 816 +2203 33 813 814 815 828 +2204 34 813 814 819 820 +2205 35 813 814 819 824 +2206 35 813 814 819 825 +2207 8 815 814 819 820 +2208 9 815 814 819 824 +2209 9 815 814 819 825 +2210 10 818 814 815 816 +2211 11 818 814 815 828 +2212 12 818 814 819 820 +2213 13 818 814 819 824 +2214 13 818 814 819 825 +2215 14 819 814 815 816 +2216 15 819 814 815 828 +2217 16 814 815 828 829 +2218 17 814 815 828 832 +2219 18 816 815 828 829 +2220 19 816 815 828 832 +2221 97 814 819 820 821 +2222 21 814 819 820 826 +2223 21 814 819 820 827 +2224 98 824 819 820 821 +2225 23 824 819 820 826 +2226 23 824 819 820 827 +2227 98 825 819 820 821 +2228 23 825 819 820 826 +2229 23 825 819 820 827 +2230 99 819 820 821 822 +2231 99 819 820 821 823 +2232 100 826 820 821 822 +2233 100 826 820 821 823 +2234 100 827 820 821 822 +2235 100 827 820 821 823 +2236 26 815 828 829 830 +2237 27 815 828 829 833 +2238 28 815 828 829 834 +2239 29 832 828 829 830 +2240 30 832 828 829 833 +2241 31 832 828 829 834 +2242 32 828 829 830 831 +2243 33 828 829 830 840 +2244 141 828 829 834 835 +2245 35 828 829 834 838 +2246 35 828 829 834 839 +2247 142 830 829 834 835 +2248 9 830 829 834 838 +2249 9 830 829 834 839 +2250 10 833 829 830 831 +2251 11 833 829 830 840 +2252 143 833 829 834 835 +2253 13 833 829 834 838 +2254 13 833 829 834 839 +2255 14 834 829 830 831 +2256 15 834 829 830 840 +2257 85 829 830 840 841 +2258 17 829 830 840 844 +2259 86 831 830 840 841 +2260 19 831 830 840 844 +2261 144 829 834 835 836 +2262 144 829 834 835 837 +2263 100 838 834 835 836 +2264 100 838 834 835 837 +2265 100 839 834 835 836 +2266 100 839 834 835 837 +2267 87 830 840 841 842 +2268 88 830 840 841 845 +2269 88 830 840 841 846 +2270 89 844 840 841 842 +2271 90 844 840 841 845 +2272 90 844 840 841 846 +2273 91 840 841 842 843 +2274 92 840 841 842 847 +2275 93 845 841 842 843 +2276 94 845 841 842 847 +2277 93 846 841 842 843 +2278 94 846 841 842 847 +2279 95 841 842 847 848 +2280 96 841 842 847 851 +2281 18 843 842 847 848 +2282 19 843 842 847 851 +2283 26 842 847 848 849 +2284 27 842 847 848 852 +2285 28 842 847 848 853 +2286 29 851 847 848 849 +2287 30 851 847 848 852 +2288 31 851 847 848 853 +2289 32 847 848 849 850 +2290 33 847 848 849 871 +2291 34 847 848 853 854 +2292 35 847 848 853 860 +2293 35 847 848 853 861 +2294 8 849 848 853 854 +2295 9 849 848 853 860 +2296 9 849 848 853 861 +2297 10 852 848 849 850 +2298 11 852 848 849 871 +2299 12 852 848 853 854 +2300 13 852 848 853 860 +2301 13 852 848 853 861 +2302 14 853 848 849 850 +2303 15 853 848 849 871 +2304 16 848 849 871 872 +2305 17 848 849 871 875 +2306 18 850 849 871 872 +2307 19 850 849 871 875 +2308 67 848 853 854 855 +2309 21 848 853 854 862 +2310 21 848 853 854 863 +2311 68 860 853 854 855 +2312 23 860 853 854 862 +2313 23 860 853 854 863 +2314 68 861 853 854 855 +2315 23 861 853 854 862 +2316 23 861 853 854 863 +2317 153 853 854 855 856 +2318 68 853 854 855 864 +2319 68 853 854 855 865 +2320 154 862 854 855 856 +2321 23 862 854 855 864 +2322 23 862 854 855 865 +2323 154 863 854 855 856 +2324 23 863 854 855 864 +2325 23 863 854 855 865 +2326 155 854 855 856 857 +2327 156 854 855 856 866 +2328 157 864 855 856 857 +2329 158 864 855 856 866 +2330 157 865 855 856 857 +2331 158 865 855 856 866 +2332 159 855 856 857 858 +2333 159 855 856 857 859 +2334 160 866 856 857 858 +2335 160 866 856 857 859 +2336 160 856 857 858 867 +2337 160 856 857 858 868 +2338 160 856 857 859 869 +2339 160 856 857 859 870 +2340 160 858 857 859 869 +2341 160 858 857 859 870 +2342 160 859 857 858 867 +2343 160 859 857 858 868 +2344 26 849 871 872 873 +2345 27 849 871 872 876 +2346 43 849 871 872 877 +2347 29 875 871 872 873 +2348 30 875 871 872 876 +2349 44 875 871 872 877 +2350 32 871 872 873 874 +2351 33 871 872 873 885 +2352 74 871 872 877 878 +2353 45 871 872 877 879 +2354 46 871 872 877 880 +2355 75 873 872 877 878 +2356 47 873 872 877 879 +2357 48 873 872 877 880 +2358 10 876 872 873 874 +2359 11 876 872 873 885 +2360 76 876 872 877 878 +2361 49 876 872 877 879 +2362 50 876 872 877 880 +2363 51 877 872 873 874 +2364 52 877 872 873 885 +2365 16 872 873 885 886 +2366 17 872 873 885 889 +2367 18 874 873 885 886 +2368 19 874 873 885 889 +2369 77 872 877 878 881 +2370 54 872 877 879 882 +2371 54 872 877 879 883 +2372 54 872 877 879 884 +2373 78 878 877 879 882 +2374 78 878 877 879 883 +2375 78 878 877 879 884 +2376 79 879 877 878 881 +2377 80 880 877 878 881 +2378 13 880 877 879 882 +2379 13 880 877 879 883 +2380 13 880 877 879 884 +2381 26 873 885 886 887 +2382 27 873 885 886 890 +2383 28 873 885 886 891 +2384 29 889 885 886 887 +2385 30 889 885 886 890 +2386 31 889 885 886 891 +2387 32 885 886 887 888 +2388 33 885 886 887 904 +2389 81 885 886 891 892 +2390 35 885 886 891 895 +2391 35 885 886 891 896 +2392 82 887 886 891 892 +2393 9 887 886 891 895 +2394 9 887 886 891 896 +2395 10 890 886 887 888 +2396 11 890 886 887 904 +2397 83 890 886 891 892 +2398 13 890 886 891 895 +2399 13 890 886 891 896 +2400 14 891 886 887 888 +2401 15 891 886 887 904 +2402 16 886 887 904 905 +2403 17 886 887 904 908 +2404 18 888 887 904 905 +2405 19 888 887 904 908 +2406 84 886 891 892 893 +2407 84 886 891 892 894 +2408 83 886 891 892 897 +2409 55 895 891 892 893 +2410 55 895 891 892 894 +2411 13 895 891 892 897 +2412 55 896 891 892 893 +2413 55 896 891 892 894 +2414 13 896 891 892 897 +2415 55 891 892 893 898 +2416 55 891 892 893 899 +2417 55 891 892 893 900 +2418 55 891 892 894 901 +2419 55 891 892 894 902 +2420 55 891 892 894 903 +2421 55 893 892 894 901 +2422 55 893 892 894 902 +2423 55 893 892 894 903 +2424 55 894 892 893 898 +2425 55 894 892 893 899 +2426 55 894 892 893 900 +2427 13 897 892 893 898 +2428 13 897 892 893 899 +2429 13 897 892 893 900 +2430 13 897 892 894 901 +2431 13 897 892 894 902 +2432 13 897 892 894 903 +2433 26 887 904 905 906 +2434 27 887 904 905 909 +2435 28 887 904 905 910 +2436 29 908 904 905 906 +2437 30 908 904 905 909 +2438 31 908 904 905 910 +2439 32 904 905 906 907 +2440 33 904 905 906 915 +2441 136 904 905 910 911 +2442 35 904 905 910 912 +2443 35 904 905 910 913 +2444 137 906 905 910 911 +2445 9 906 905 910 912 +2446 9 906 905 910 913 +2447 10 909 905 906 907 +2448 11 909 905 906 915 +2449 138 909 905 910 911 +2450 13 909 905 910 912 +2451 13 909 905 910 913 +2452 14 910 905 906 907 +2453 15 910 905 906 915 +2454 16 905 906 915 916 +2455 17 905 906 915 919 +2456 18 907 906 915 916 +2457 19 907 906 915 919 +2458 139 905 910 911 914 +2459 140 912 910 911 914 +2460 140 913 910 911 914 +2461 26 906 915 916 917 +2462 27 906 915 916 920 +2463 28 906 915 916 921 +2464 29 919 915 916 917 +2465 30 919 915 916 920 +2466 31 919 915 916 921 +2467 32 915 916 917 918 +2468 33 915 916 917 927 +2469 141 915 916 921 922 +2470 35 915 916 921 925 +2471 35 915 916 921 926 +2472 142 917 916 921 922 +2473 9 917 916 921 925 +2474 9 917 916 921 926 +2475 10 920 916 917 918 +2476 11 920 916 917 927 +2477 143 920 916 921 922 +2478 13 920 916 921 925 +2479 13 920 916 921 926 +2480 14 921 916 917 918 +2481 15 921 916 917 927 +2482 16 916 917 927 928 +2483 17 916 917 927 931 +2484 18 918 917 927 928 +2485 19 918 917 927 931 +2486 144 916 921 922 923 +2487 144 916 921 922 924 +2488 100 925 921 922 923 +2489 100 925 921 922 924 +2490 100 926 921 922 923 +2491 100 926 921 922 924 +2492 26 917 927 928 929 +2493 27 917 927 928 932 +2494 28 917 927 928 933 +2495 29 931 927 928 929 +2496 30 931 927 928 932 +2497 31 931 927 928 933 +2498 32 927 928 929 930 +2499 33 927 928 929 948 +2500 57 927 928 933 934 +2501 35 927 928 933 941 +2502 35 927 928 933 942 +2503 58 929 928 933 934 +2504 9 929 928 933 941 +2505 9 929 928 933 942 +2506 10 932 928 929 930 +2507 11 932 928 929 948 +2508 59 932 928 933 934 +2509 13 932 928 933 941 +2510 13 932 928 933 942 +2511 14 933 928 929 930 +2512 15 933 928 929 948 +2513 16 928 929 948 949 +2514 17 928 929 948 952 +2515 18 930 929 948 949 +2516 19 930 929 948 952 +2517 60 928 933 934 935 +2518 60 928 933 934 936 +2519 61 941 933 934 935 +2520 61 941 933 934 936 +2521 61 942 933 934 935 +2522 61 942 933 934 936 +2523 62 933 934 935 937 +2524 63 933 934 935 943 +2525 62 933 934 936 938 +2526 63 933 934 936 944 +2527 64 935 934 936 938 +2528 65 935 934 936 944 +2529 64 936 934 935 937 +2530 65 936 934 935 943 +2531 64 934 935 937 939 +2532 65 934 935 937 945 +2533 65 943 935 937 939 +2534 66 943 935 937 945 +2535 64 934 936 938 939 +2536 65 934 936 938 946 +2537 65 944 936 938 939 +2538 66 944 936 938 946 +2539 64 935 937 939 938 +2540 161 935 937 939 940 +2541 65 945 937 939 938 +2542 162 945 937 939 940 +2543 64 936 938 939 937 +2544 161 936 938 939 940 +2545 65 946 938 939 937 +2546 162 946 938 939 940 +2547 163 937 939 940 947 +2548 163 938 939 940 947 +2549 26 929 948 949 950 +2550 27 929 948 949 953 +2551 28 929 948 949 954 +2552 29 952 948 949 950 +2553 30 952 948 949 953 +2554 31 952 948 949 954 +2555 32 948 949 950 951 +2556 33 948 949 950 962 +2557 145 948 949 954 955 +2558 35 948 949 954 958 +2559 35 948 949 954 959 +2560 146 950 949 954 955 +2561 9 950 949 954 958 +2562 9 950 949 954 959 +2563 10 953 949 950 951 +2564 11 953 949 950 962 +2565 147 953 949 954 955 +2566 13 953 949 954 958 +2567 13 953 949 954 959 +2568 14 954 949 950 951 +2569 15 954 949 950 962 +2570 16 949 950 962 963 +2571 17 949 950 962 966 +2572 18 951 950 962 963 +2573 19 951 950 962 966 +2574 148 949 954 955 956 +2575 149 949 954 955 957 +2576 40 958 954 955 956 +2577 41 958 954 955 957 +2578 40 959 954 955 956 +2579 41 959 954 955 957 +2580 42 954 955 957 960 +2581 42 954 955 957 961 +2582 19 956 955 957 960 +2583 19 956 955 957 961 +2584 26 950 962 963 964 +2585 27 950 962 963 967 +2586 43 950 962 963 968 +2587 29 966 962 963 964 +2588 30 966 962 963 967 +2589 44 966 962 963 968 +2590 32 962 963 964 965 +2591 33 962 963 964 981 +2592 45 962 963 968 969 +2593 45 962 963 968 970 +2594 46 962 963 968 972 +2595 47 964 963 968 969 +2596 47 964 963 968 970 +2597 48 964 963 968 972 +2598 10 967 963 964 965 +2599 11 967 963 964 981 +2600 49 967 963 968 969 +2601 49 967 963 968 970 +2602 50 967 963 968 972 +2603 51 968 963 964 965 +2604 52 968 963 964 981 +2605 16 963 964 981 982 +2606 17 963 964 981 985 +2607 18 965 964 981 982 +2608 19 965 964 981 985 +2609 53 963 968 969 971 +2610 54 963 968 969 973 +2611 54 963 968 969 974 +2612 54 963 968 970 975 +2613 54 963 968 970 976 +2614 54 963 968 970 977 +2615 55 969 968 970 975 +2616 55 969 968 970 976 +2617 55 969 968 970 977 +2618 56 970 968 969 971 +2619 55 970 968 969 973 +2620 55 970 968 969 974 +2621 12 972 968 969 971 +2622 13 972 968 969 973 +2623 13 972 968 969 974 +2624 13 972 968 970 975 +2625 13 972 968 970 976 +2626 13 972 968 970 977 +2627 21 968 969 971 978 +2628 21 968 969 971 979 +2629 21 968 969 971 980 +2630 23 973 969 971 978 +2631 23 973 969 971 979 +2632 23 973 969 971 980 +2633 23 974 969 971 978 +2634 23 974 969 971 979 +2635 23 974 969 971 980 +2636 26 964 981 982 983 +2637 27 964 981 982 986 +2638 28 964 981 982 987 +2639 29 985 981 982 983 +2640 30 985 981 982 986 +2641 31 985 981 982 987 +2642 32 981 982 983 984 +2643 33 981 982 983 998 +2644 34 981 982 987 988 +2645 35 981 982 987 992 +2646 35 981 982 987 993 +2647 8 983 982 987 988 +2648 9 983 982 987 992 +2649 9 983 982 987 993 +2650 10 986 982 983 984 +2651 11 986 982 983 998 +2652 12 986 982 987 988 +2653 13 986 982 987 992 +2654 13 986 982 987 993 +2655 14 987 982 983 984 +2656 15 987 982 983 998 +2657 16 982 983 998 999 +2658 17 982 983 998 1002 +2659 18 984 983 998 999 +2660 19 984 983 998 1002 +2661 36 982 987 988 989 +2662 21 982 987 988 994 +2663 21 982 987 988 995 +2664 37 992 987 988 989 +2665 23 992 987 988 994 +2666 23 992 987 988 995 +2667 37 993 987 988 989 +2668 23 993 987 988 994 +2669 23 993 987 988 995 +2670 38 987 988 989 990 +2671 39 987 988 989 991 +2672 40 994 988 989 990 +2673 41 994 988 989 991 +2674 40 995 988 989 990 +2675 41 995 988 989 991 +2676 42 988 989 991 996 +2677 42 988 989 991 997 +2678 19 990 989 991 996 +2679 19 990 989 991 997 +2680 26 983 998 999 1000 +2681 27 983 998 999 1003 +2682 28 983 998 999 1004 +2683 29 1002 998 999 1000 +2684 30 1002 998 999 1003 +2685 31 1002 998 999 1004 +2686 32 998 999 1000 1001 +2687 33 998 999 1000 1020 +2688 34 998 999 1004 1005 +2689 35 998 999 1004 1009 +2690 35 998 999 1004 1010 +2691 8 1000 999 1004 1005 +2692 9 1000 999 1004 1009 +2693 9 1000 999 1004 1010 +2694 10 1003 999 1000 1001 +2695 11 1003 999 1000 1020 +2696 12 1003 999 1004 1005 +2697 13 1003 999 1004 1009 +2698 13 1003 999 1004 1010 +2699 14 1004 999 1000 1001 +2700 15 1004 999 1000 1020 +2701 16 999 1000 1020 1021 +2702 17 999 1000 1020 1024 +2703 18 1001 1000 1020 1021 +2704 19 1001 1000 1020 1024 +2705 67 999 1004 1005 1006 +2706 21 999 1004 1005 1011 +2707 21 999 1004 1005 1012 +2708 68 1009 1004 1005 1006 +2709 23 1009 1004 1005 1011 +2710 23 1009 1004 1005 1012 +2711 68 1010 1004 1005 1006 +2712 23 1010 1004 1005 1011 +2713 23 1010 1004 1005 1012 +2714 69 1004 1005 1006 1007 +2715 68 1004 1005 1006 1013 +2716 68 1004 1005 1006 1014 +2717 68 1011 1005 1006 1007 +2718 23 1011 1005 1006 1013 +2719 23 1011 1005 1006 1014 +2720 68 1012 1005 1006 1007 +2721 23 1012 1005 1006 1013 +2722 23 1012 1005 1006 1014 +2723 70 1005 1006 1007 1008 +2724 68 1005 1006 1007 1015 +2725 68 1005 1006 1007 1016 +2726 71 1013 1006 1007 1008 +2727 23 1013 1006 1007 1015 +2728 23 1013 1006 1007 1016 +2729 71 1014 1006 1007 1008 +2730 23 1014 1006 1007 1015 +2731 23 1014 1006 1007 1016 +2732 72 1006 1007 1008 1017 +2733 72 1006 1007 1008 1018 +2734 72 1006 1007 1008 1019 +2735 73 1015 1007 1008 1017 +2736 73 1015 1007 1008 1018 +2737 73 1015 1007 1008 1019 +2738 73 1016 1007 1008 1017 +2739 73 1016 1007 1008 1018 +2740 73 1016 1007 1008 1019 +2741 26 1000 1020 1021 1022 +2742 27 1000 1020 1021 1025 +2743 28 1000 1020 1021 1026 +2744 29 1024 1020 1021 1022 +2745 30 1024 1020 1021 1025 +2746 31 1024 1020 1021 1026 +2747 32 1020 1021 1022 1023 +2748 33 1020 1021 1022 1035 +2749 34 1020 1021 1026 1027 +2750 35 1020 1021 1026 1031 +2751 35 1020 1021 1026 1032 +2752 8 1022 1021 1026 1027 +2753 9 1022 1021 1026 1031 +2754 9 1022 1021 1026 1032 +2755 10 1025 1021 1022 1023 +2756 11 1025 1021 1022 1035 +2757 12 1025 1021 1026 1027 +2758 13 1025 1021 1026 1031 +2759 13 1025 1021 1026 1032 +2760 14 1026 1021 1022 1023 +2761 15 1026 1021 1022 1035 +2762 16 1021 1022 1035 1036 +2763 17 1021 1022 1035 1039 +2764 18 1023 1022 1035 1036 +2765 19 1023 1022 1035 1039 +2766 97 1021 1026 1027 1028 +2767 21 1021 1026 1027 1033 +2768 21 1021 1026 1027 1034 +2769 98 1031 1026 1027 1028 +2770 23 1031 1026 1027 1033 +2771 23 1031 1026 1027 1034 +2772 98 1032 1026 1027 1028 +2773 23 1032 1026 1027 1033 +2774 23 1032 1026 1027 1034 +2775 99 1026 1027 1028 1029 +2776 99 1026 1027 1028 1030 +2777 100 1033 1027 1028 1029 +2778 100 1033 1027 1028 1030 +2779 100 1034 1027 1028 1029 +2780 100 1034 1027 1028 1030 +2781 26 1022 1035 1036 1037 +2782 27 1022 1035 1036 1040 +2783 28 1022 1035 1036 1041 +2784 29 1039 1035 1036 1037 +2785 30 1039 1035 1036 1040 +2786 31 1039 1035 1036 1041 +2787 32 1035 1036 1037 1038 +2788 33 1035 1036 1037 1046 +2789 136 1035 1036 1041 1042 +2790 35 1035 1036 1041 1043 +2791 35 1035 1036 1041 1044 +2792 137 1037 1036 1041 1042 +2793 9 1037 1036 1041 1043 +2794 9 1037 1036 1041 1044 +2795 10 1040 1036 1037 1038 +2796 11 1040 1036 1037 1046 +2797 138 1040 1036 1041 1042 +2798 13 1040 1036 1041 1043 +2799 13 1040 1036 1041 1044 +2800 14 1041 1036 1037 1038 +2801 15 1041 1036 1037 1046 +2802 16 1036 1037 1046 1047 +2803 17 1036 1037 1046 1050 +2804 18 1038 1037 1046 1047 +2805 19 1038 1037 1046 1050 +2806 139 1036 1041 1042 1045 +2807 140 1043 1041 1042 1045 +2808 140 1044 1041 1042 1045 +2809 26 1037 1046 1047 1048 +2810 27 1037 1046 1047 1051 +2811 43 1037 1046 1047 1052 +2812 29 1050 1046 1047 1048 +2813 30 1050 1046 1047 1051 +2814 44 1050 1046 1047 1052 +2815 32 1046 1047 1048 1049 +2816 33 1046 1047 1048 1060 +2817 74 1046 1047 1052 1053 +2818 45 1046 1047 1052 1054 +2819 46 1046 1047 1052 1055 +2820 75 1048 1047 1052 1053 +2821 47 1048 1047 1052 1054 +2822 48 1048 1047 1052 1055 +2823 10 1051 1047 1048 1049 +2824 11 1051 1047 1048 1060 +2825 76 1051 1047 1052 1053 +2826 49 1051 1047 1052 1054 +2827 50 1051 1047 1052 1055 +2828 51 1052 1047 1048 1049 +2829 52 1052 1047 1048 1060 +2830 16 1047 1048 1060 1061 +2831 17 1047 1048 1060 1064 +2832 18 1049 1048 1060 1061 +2833 19 1049 1048 1060 1064 +2834 77 1047 1052 1053 1056 +2835 54 1047 1052 1054 1057 +2836 54 1047 1052 1054 1058 +2837 54 1047 1052 1054 1059 +2838 78 1053 1052 1054 1057 +2839 78 1053 1052 1054 1058 +2840 78 1053 1052 1054 1059 +2841 79 1054 1052 1053 1056 +2842 80 1055 1052 1053 1056 +2843 13 1055 1052 1054 1057 +2844 13 1055 1052 1054 1058 +2845 13 1055 1052 1054 1059 +2846 26 1048 1060 1061 1062 +2847 27 1048 1060 1061 1065 +2848 28 1048 1060 1061 1066 +2849 29 1064 1060 1061 1062 +2850 30 1064 1060 1061 1065 +2851 31 1064 1060 1061 1066 +2852 32 1060 1061 1062 1063 +2853 33 1060 1061 1062 1079 +2854 81 1060 1061 1066 1067 +2855 35 1060 1061 1066 1070 +2856 35 1060 1061 1066 1071 +2857 82 1062 1061 1066 1067 +2858 9 1062 1061 1066 1070 +2859 9 1062 1061 1066 1071 +2860 10 1065 1061 1062 1063 +2861 11 1065 1061 1062 1079 +2862 83 1065 1061 1066 1067 +2863 13 1065 1061 1066 1070 +2864 13 1065 1061 1066 1071 +2865 14 1066 1061 1062 1063 +2866 15 1066 1061 1062 1079 +2867 16 1061 1062 1079 1080 +2868 17 1061 1062 1079 1083 +2869 18 1063 1062 1079 1080 +2870 19 1063 1062 1079 1083 +2871 84 1061 1066 1067 1068 +2872 84 1061 1066 1067 1069 +2873 83 1061 1066 1067 1072 +2874 55 1070 1066 1067 1068 +2875 55 1070 1066 1067 1069 +2876 13 1070 1066 1067 1072 +2877 55 1071 1066 1067 1068 +2878 55 1071 1066 1067 1069 +2879 13 1071 1066 1067 1072 +2880 55 1066 1067 1068 1073 +2881 55 1066 1067 1068 1074 +2882 55 1066 1067 1068 1075 +2883 55 1066 1067 1069 1076 +2884 55 1066 1067 1069 1077 +2885 55 1066 1067 1069 1078 +2886 55 1068 1067 1069 1076 +2887 55 1068 1067 1069 1077 +2888 55 1068 1067 1069 1078 +2889 55 1069 1067 1068 1073 +2890 55 1069 1067 1068 1074 +2891 55 1069 1067 1068 1075 +2892 13 1072 1067 1068 1073 +2893 13 1072 1067 1068 1074 +2894 13 1072 1067 1068 1075 +2895 13 1072 1067 1069 1076 +2896 13 1072 1067 1069 1077 +2897 13 1072 1067 1069 1078 +2898 26 1062 1079 1080 1081 +2899 27 1062 1079 1080 1084 +2900 28 1062 1079 1080 1085 +2901 29 1083 1079 1080 1081 +2902 30 1083 1079 1080 1084 +2903 31 1083 1079 1080 1085 +2904 32 1079 1080 1081 1082 +2905 33 1079 1080 1081 1097 +2906 164 1079 1080 1085 1086 +2907 35 1079 1080 1085 1091 +2908 35 1079 1080 1085 1092 +2909 165 1081 1080 1085 1086 +2910 9 1081 1080 1085 1091 +2911 9 1081 1080 1085 1092 +2912 10 1084 1080 1081 1082 +2913 11 1084 1080 1081 1097 +2914 166 1084 1080 1085 1086 +2915 13 1084 1080 1085 1091 +2916 13 1084 1080 1085 1092 +2917 14 1085 1080 1081 1082 +2918 15 1085 1080 1081 1097 +2919 16 1080 1081 1097 1098 +2920 17 1080 1081 1097 1101 +2921 18 1082 1081 1097 1098 +2922 19 1082 1081 1097 1101 +2923 167 1080 1085 1086 1087 +2924 168 1080 1085 1086 1088 +2925 169 1091 1085 1086 1087 +2926 170 1091 1085 1086 1088 +2927 169 1092 1085 1086 1087 +2928 170 1092 1085 1086 1088 +2929 171 1085 1086 1087 1089 +2930 172 1085 1086 1087 1093 +2931 173 1085 1086 1088 1090 +2932 174 1085 1086 1088 1094 +2933 175 1087 1086 1088 1090 +2934 176 1087 1086 1088 1094 +2935 177 1088 1086 1087 1089 +2936 178 1088 1086 1087 1093 +2937 179 1086 1087 1089 1090 +2938 180 1086 1087 1089 1095 +2939 181 1093 1087 1089 1090 +2940 182 1093 1087 1089 1095 +2941 177 1086 1088 1090 1089 +2942 178 1086 1088 1090 1096 +2943 183 1094 1088 1090 1089 +2944 184 1094 1088 1090 1096 +2945 179 1087 1089 1090 1088 +2946 181 1087 1089 1090 1096 +2947 180 1095 1089 1090 1088 +2948 182 1095 1089 1090 1096 +2949 26 1081 1097 1098 1099 +2950 27 1081 1097 1098 1102 +2951 28 1081 1097 1098 1103 +2952 29 1101 1097 1098 1099 +2953 30 1101 1097 1098 1102 +2954 31 1101 1097 1098 1103 +2955 32 1097 1098 1099 1100 +2956 33 1097 1098 1099 1116 +2957 81 1097 1098 1103 1104 +2958 35 1097 1098 1103 1107 +2959 35 1097 1098 1103 1108 +2960 82 1099 1098 1103 1104 +2961 9 1099 1098 1103 1107 +2962 9 1099 1098 1103 1108 +2963 10 1102 1098 1099 1100 +2964 11 1102 1098 1099 1116 +2965 83 1102 1098 1103 1104 +2966 13 1102 1098 1103 1107 +2967 13 1102 1098 1103 1108 +2968 14 1103 1098 1099 1100 +2969 15 1103 1098 1099 1116 +2970 16 1098 1099 1116 1117 +2971 17 1098 1099 1116 1120 +2972 18 1100 1099 1116 1117 +2973 19 1100 1099 1116 1120 +2974 84 1098 1103 1104 1105 +2975 84 1098 1103 1104 1106 +2976 83 1098 1103 1104 1109 +2977 55 1107 1103 1104 1105 +2978 55 1107 1103 1104 1106 +2979 13 1107 1103 1104 1109 +2980 55 1108 1103 1104 1105 +2981 55 1108 1103 1104 1106 +2982 13 1108 1103 1104 1109 +2983 55 1103 1104 1105 1110 +2984 55 1103 1104 1105 1111 +2985 55 1103 1104 1105 1112 +2986 55 1103 1104 1106 1113 +2987 55 1103 1104 1106 1114 +2988 55 1103 1104 1106 1115 +2989 55 1105 1104 1106 1113 +2990 55 1105 1104 1106 1114 +2991 55 1105 1104 1106 1115 +2992 55 1106 1104 1105 1110 +2993 55 1106 1104 1105 1111 +2994 55 1106 1104 1105 1112 +2995 13 1109 1104 1105 1110 +2996 13 1109 1104 1105 1111 +2997 13 1109 1104 1105 1112 +2998 13 1109 1104 1106 1113 +2999 13 1109 1104 1106 1114 +3000 13 1109 1104 1106 1115 +3001 26 1099 1116 1117 1118 +3002 27 1099 1116 1117 1121 +3003 43 1099 1116 1117 1122 +3004 29 1120 1116 1117 1118 +3005 30 1120 1116 1117 1121 +3006 44 1120 1116 1117 1122 +3007 32 1116 1117 1118 1119 +3008 33 1116 1117 1118 1132 +3009 45 1116 1117 1122 1123 +3010 45 1116 1117 1122 1124 +3011 46 1116 1117 1122 1125 +3012 47 1118 1117 1122 1123 +3013 47 1118 1117 1122 1124 +3014 48 1118 1117 1122 1125 +3015 10 1121 1117 1118 1119 +3016 11 1121 1117 1118 1132 +3017 49 1121 1117 1122 1123 +3018 49 1121 1117 1122 1124 +3019 50 1121 1117 1122 1125 +3020 51 1122 1117 1118 1119 +3021 52 1122 1117 1118 1132 +3022 16 1117 1118 1132 1133 +3023 17 1117 1118 1132 1136 +3024 18 1119 1118 1132 1133 +3025 19 1119 1118 1132 1136 +3026 54 1117 1122 1123 1126 +3027 54 1117 1122 1123 1127 +3028 54 1117 1122 1123 1128 +3029 54 1117 1122 1124 1129 +3030 54 1117 1122 1124 1130 +3031 54 1117 1122 1124 1131 +3032 55 1123 1122 1124 1129 +3033 55 1123 1122 1124 1130 +3034 55 1123 1122 1124 1131 +3035 55 1124 1122 1123 1126 +3036 55 1124 1122 1123 1127 +3037 55 1124 1122 1123 1128 +3038 13 1125 1122 1123 1126 +3039 13 1125 1122 1123 1127 +3040 13 1125 1122 1123 1128 +3041 13 1125 1122 1124 1129 +3042 13 1125 1122 1124 1130 +3043 13 1125 1122 1124 1131 +3044 26 1118 1132 1133 1134 +3045 27 1118 1132 1133 1137 +3046 28 1118 1132 1133 1138 +3047 29 1136 1132 1133 1134 +3048 30 1136 1132 1133 1137 +3049 31 1136 1132 1133 1138 +3050 32 1132 1133 1134 1135 +3051 33 1132 1133 1134 1151 +3052 81 1132 1133 1138 1139 +3053 35 1132 1133 1138 1142 +3054 35 1132 1133 1138 1143 +3055 82 1134 1133 1138 1139 +3056 9 1134 1133 1138 1142 +3057 9 1134 1133 1138 1143 +3058 10 1137 1133 1134 1135 +3059 11 1137 1133 1134 1151 +3060 83 1137 1133 1138 1139 +3061 13 1137 1133 1138 1142 +3062 13 1137 1133 1138 1143 +3063 14 1138 1133 1134 1135 +3064 15 1138 1133 1134 1151 +3065 16 1133 1134 1151 1152 +3066 17 1133 1134 1151 1155 +3067 18 1135 1134 1151 1152 +3068 19 1135 1134 1151 1155 +3069 84 1133 1138 1139 1140 +3070 84 1133 1138 1139 1141 +3071 83 1133 1138 1139 1144 +3072 55 1142 1138 1139 1140 +3073 55 1142 1138 1139 1141 +3074 13 1142 1138 1139 1144 +3075 55 1143 1138 1139 1140 +3076 55 1143 1138 1139 1141 +3077 13 1143 1138 1139 1144 +3078 55 1138 1139 1140 1145 +3079 55 1138 1139 1140 1146 +3080 55 1138 1139 1140 1147 +3081 55 1138 1139 1141 1148 +3082 55 1138 1139 1141 1149 +3083 55 1138 1139 1141 1150 +3084 55 1140 1139 1141 1148 +3085 55 1140 1139 1141 1149 +3086 55 1140 1139 1141 1150 +3087 55 1141 1139 1140 1145 +3088 55 1141 1139 1140 1146 +3089 55 1141 1139 1140 1147 +3090 13 1144 1139 1140 1145 +3091 13 1144 1139 1140 1146 +3092 13 1144 1139 1140 1147 +3093 13 1144 1139 1141 1148 +3094 13 1144 1139 1141 1149 +3095 13 1144 1139 1141 1150 +3096 26 1134 1151 1152 1153 +3097 27 1134 1151 1152 1156 +3098 28 1134 1151 1152 1157 +3099 29 1155 1151 1152 1153 +3100 30 1155 1151 1152 1156 +3101 31 1155 1151 1152 1157 +3102 32 1151 1152 1153 1154 +3103 33 1151 1152 1153 1175 +3104 34 1151 1152 1157 1158 +3105 35 1151 1152 1157 1164 +3106 35 1151 1152 1157 1165 +3107 8 1153 1152 1157 1158 +3108 9 1153 1152 1157 1164 +3109 9 1153 1152 1157 1165 +3110 10 1156 1152 1153 1154 +3111 11 1156 1152 1153 1175 +3112 12 1156 1152 1157 1158 +3113 13 1156 1152 1157 1164 +3114 13 1156 1152 1157 1165 +3115 14 1157 1152 1153 1154 +3116 15 1157 1152 1153 1175 +3117 16 1152 1153 1175 1176 +3118 17 1152 1153 1175 1179 +3119 18 1154 1153 1175 1176 +3120 19 1154 1153 1175 1179 +3121 67 1152 1157 1158 1159 +3122 21 1152 1157 1158 1166 +3123 21 1152 1157 1158 1167 +3124 68 1164 1157 1158 1159 +3125 23 1164 1157 1158 1166 +3126 23 1164 1157 1158 1167 +3127 68 1165 1157 1158 1159 +3128 23 1165 1157 1158 1166 +3129 23 1165 1157 1158 1167 +3130 153 1157 1158 1159 1160 +3131 68 1157 1158 1159 1168 +3132 68 1157 1158 1159 1169 +3133 154 1166 1158 1159 1160 +3134 23 1166 1158 1159 1168 +3135 23 1166 1158 1159 1169 +3136 154 1167 1158 1159 1160 +3137 23 1167 1158 1159 1168 +3138 23 1167 1158 1159 1169 +3139 155 1158 1159 1160 1161 +3140 156 1158 1159 1160 1170 +3141 157 1168 1159 1160 1161 +3142 158 1168 1159 1160 1170 +3143 157 1169 1159 1160 1161 +3144 158 1169 1159 1160 1170 +3145 159 1159 1160 1161 1162 +3146 159 1159 1160 1161 1163 +3147 160 1170 1160 1161 1162 +3148 160 1170 1160 1161 1163 +3149 160 1160 1161 1162 1171 +3150 160 1160 1161 1162 1172 +3151 160 1160 1161 1163 1173 +3152 160 1160 1161 1163 1174 +3153 160 1162 1161 1163 1173 +3154 160 1162 1161 1163 1174 +3155 160 1163 1161 1162 1171 +3156 160 1163 1161 1162 1172 +3157 26 1153 1175 1176 1177 +3158 27 1153 1175 1176 1180 +3159 28 1153 1175 1176 1181 +3160 29 1179 1175 1176 1177 +3161 30 1179 1175 1176 1180 +3162 31 1179 1175 1176 1181 +3163 32 1175 1176 1177 1178 +3164 33 1175 1176 1177 1194 +3165 81 1175 1176 1181 1182 +3166 35 1175 1176 1181 1185 +3167 35 1175 1176 1181 1186 +3168 82 1177 1176 1181 1182 +3169 9 1177 1176 1181 1185 +3170 9 1177 1176 1181 1186 +3171 10 1180 1176 1177 1178 +3172 11 1180 1176 1177 1194 +3173 83 1180 1176 1181 1182 +3174 13 1180 1176 1181 1185 +3175 13 1180 1176 1181 1186 +3176 14 1181 1176 1177 1178 +3177 15 1181 1176 1177 1194 +3178 16 1176 1177 1194 1195 +3179 17 1176 1177 1194 1198 +3180 18 1178 1177 1194 1195 +3181 19 1178 1177 1194 1198 +3182 84 1176 1181 1182 1183 +3183 84 1176 1181 1182 1184 +3184 83 1176 1181 1182 1187 +3185 55 1185 1181 1182 1183 +3186 55 1185 1181 1182 1184 +3187 13 1185 1181 1182 1187 +3188 55 1186 1181 1182 1183 +3189 55 1186 1181 1182 1184 +3190 13 1186 1181 1182 1187 +3191 55 1181 1182 1183 1188 +3192 55 1181 1182 1183 1189 +3193 55 1181 1182 1183 1190 +3194 55 1181 1182 1184 1191 +3195 55 1181 1182 1184 1192 +3196 55 1181 1182 1184 1193 +3197 55 1183 1182 1184 1191 +3198 55 1183 1182 1184 1192 +3199 55 1183 1182 1184 1193 +3200 55 1184 1182 1183 1188 +3201 55 1184 1182 1183 1189 +3202 55 1184 1182 1183 1190 +3203 13 1187 1182 1183 1188 +3204 13 1187 1182 1183 1189 +3205 13 1187 1182 1183 1190 +3206 13 1187 1182 1184 1191 +3207 13 1187 1182 1184 1192 +3208 13 1187 1182 1184 1193 +3209 26 1177 1194 1195 1196 +3210 27 1177 1194 1195 1199 +3211 28 1177 1194 1195 1200 +3212 29 1198 1194 1195 1196 +3213 30 1198 1194 1195 1199 +3214 31 1198 1194 1195 1200 +3215 32 1194 1195 1196 1197 +3216 33 1194 1195 1196 1218 +3217 34 1194 1195 1200 1201 +3218 35 1194 1195 1200 1207 +3219 35 1194 1195 1200 1208 +3220 8 1196 1195 1200 1201 +3221 9 1196 1195 1200 1207 +3222 9 1196 1195 1200 1208 +3223 10 1199 1195 1196 1197 +3224 11 1199 1195 1196 1218 +3225 12 1199 1195 1200 1201 +3226 13 1199 1195 1200 1207 +3227 13 1199 1195 1200 1208 +3228 14 1200 1195 1196 1197 +3229 15 1200 1195 1196 1218 +3230 85 1195 1196 1218 1219 +3231 17 1195 1196 1218 1222 +3232 86 1197 1196 1218 1219 +3233 19 1197 1196 1218 1222 +3234 67 1195 1200 1201 1202 +3235 21 1195 1200 1201 1209 +3236 21 1195 1200 1201 1210 +3237 68 1207 1200 1201 1202 +3238 23 1207 1200 1201 1209 +3239 23 1207 1200 1201 1210 +3240 68 1208 1200 1201 1202 +3241 23 1208 1200 1201 1209 +3242 23 1208 1200 1201 1210 +3243 153 1200 1201 1202 1203 +3244 68 1200 1201 1202 1211 +3245 68 1200 1201 1202 1212 +3246 154 1209 1201 1202 1203 +3247 23 1209 1201 1202 1211 +3248 23 1209 1201 1202 1212 +3249 154 1210 1201 1202 1203 +3250 23 1210 1201 1202 1211 +3251 23 1210 1201 1202 1212 +3252 155 1201 1202 1203 1204 +3253 156 1201 1202 1203 1213 +3254 157 1211 1202 1203 1204 +3255 158 1211 1202 1203 1213 +3256 157 1212 1202 1203 1204 +3257 158 1212 1202 1203 1213 +3258 159 1202 1203 1204 1205 +3259 159 1202 1203 1204 1206 +3260 160 1213 1203 1204 1205 +3261 160 1213 1203 1204 1206 +3262 160 1203 1204 1205 1214 +3263 160 1203 1204 1205 1215 +3264 160 1203 1204 1206 1216 +3265 160 1203 1204 1206 1217 +3266 160 1205 1204 1206 1216 +3267 160 1205 1204 1206 1217 +3268 160 1206 1204 1205 1214 +3269 160 1206 1204 1205 1215 +3270 87 1196 1218 1219 1220 +3271 88 1196 1218 1219 1223 +3272 88 1196 1218 1219 1224 +3273 89 1222 1218 1219 1220 +3274 90 1222 1218 1219 1223 +3275 90 1222 1218 1219 1224 +3276 91 1218 1219 1220 1221 +3277 92 1218 1219 1220 1225 +3278 93 1223 1219 1220 1221 +3279 94 1223 1219 1220 1225 +3280 93 1224 1219 1220 1221 +3281 94 1224 1219 1220 1225 +3282 185 1219 1220 1225 1226 +3283 96 1219 1220 1225 1229 +3284 86 1221 1220 1225 1226 +3285 19 1221 1220 1225 1229 +3286 186 1220 1225 1226 1227 +3287 88 1220 1225 1226 1230 +3288 88 1220 1225 1226 1231 +3289 187 1229 1225 1226 1227 +3290 90 1229 1225 1226 1230 +3291 90 1229 1225 1226 1231 +3292 188 1225 1226 1227 1228 +3293 188 1225 1226 1227 1232 +3294 189 1230 1226 1227 1228 +3295 189 1230 1226 1227 1232 +3296 189 1231 1226 1227 1228 +3297 189 1231 1226 1227 1232 + +Impropers + +1 1 2 3 4 20 +2 2 4 3 2 20 +3 3 20 3 2 4 +4 4 3 20 21 24 +5 5 21 20 3 24 +6 6 24 20 3 21 +7 1 21 22 23 37 +8 2 23 22 21 37 +9 3 37 22 21 23 +10 7 27 28 29 30 +11 2 29 28 27 30 +12 3 30 28 27 29 +13 4 28 30 35 36 +14 6 35 30 28 36 +15 6 36 30 28 35 +16 4 22 37 38 41 +17 5 38 37 22 41 +18 6 41 37 22 38 +19 1 38 39 40 56 +20 2 40 39 38 56 +21 3 56 39 38 40 +22 4 39 56 57 60 +23 5 57 56 39 60 +24 6 60 56 39 57 +25 1 57 58 59 76 +26 2 59 58 57 76 +27 3 76 58 57 59 +28 8 62 63 64 65 +29 9 64 63 62 65 +30 9 65 63 62 64 +31 9 63 64 66 71 +32 9 66 64 63 71 +33 10 71 64 63 66 +34 9 63 65 67 72 +35 9 67 65 63 72 +36 10 72 65 63 67 +37 9 64 66 68 73 +38 9 68 66 64 73 +39 10 73 66 64 68 +40 9 65 67 68 74 +41 9 68 67 65 74 +42 10 74 67 65 68 +43 9 66 68 67 75 +44 9 67 68 66 75 +45 10 75 68 66 67 +46 4 58 76 77 80 +47 5 77 76 58 80 +48 6 80 76 58 77 +49 1 77 78 79 92 +50 2 79 78 77 92 +51 3 92 78 77 79 +52 4 78 92 93 96 +53 5 93 92 78 96 +54 6 96 92 78 93 +55 1 93 94 95 114 +56 2 95 94 93 114 +57 3 114 94 93 95 +58 4 94 114 115 118 +59 5 115 114 94 118 +60 6 118 114 94 115 +61 1 115 116 117 128 +62 2 117 116 115 128 +63 3 128 116 115 117 +64 4 116 128 129 132 +65 5 129 128 116 132 +66 6 132 128 116 129 +67 1 129 130 131 147 +68 2 131 130 129 147 +69 3 147 130 129 131 +70 4 130 147 148 151 +71 5 148 147 130 151 +72 6 151 147 130 148 +73 1 148 149 150 161 +74 2 150 149 148 161 +75 3 161 149 148 150 +76 4 149 161 162 165 +77 11 162 161 149 165 +78 6 165 161 149 162 +79 12 162 163 164 168 +80 2 164 163 162 168 +81 3 168 163 162 164 +82 4 163 168 169 172 +83 5 169 168 163 172 +84 6 172 168 163 169 +85 1 169 170 171 190 +86 2 171 170 169 190 +87 3 190 170 169 171 +88 4 170 190 191 194 +89 5 191 190 170 194 +90 6 194 190 170 191 +91 1 191 192 193 204 +92 2 193 192 191 204 +93 3 204 192 191 193 +94 4 192 204 205 208 +95 5 205 204 192 208 +96 6 208 204 192 205 +97 1 205 206 207 223 +98 2 207 206 205 223 +99 3 223 206 205 207 +100 4 206 223 224 227 +101 5 224 223 206 227 +102 6 227 223 206 224 +103 1 224 225 226 237 +104 2 226 225 224 237 +105 3 237 225 224 226 +106 4 225 237 238 241 +107 5 238 237 225 241 +108 6 241 237 225 238 +109 1 238 239 240 256 +110 2 240 239 238 256 +111 3 256 239 238 240 +112 4 239 256 257 260 +113 5 257 256 239 260 +114 6 260 256 239 257 +115 1 257 258 259 271 +116 2 259 258 257 271 +117 3 271 258 257 259 +118 13 263 264 265 266 +119 14 265 264 263 266 +120 14 266 264 263 265 +121 4 258 271 272 275 +122 5 272 271 258 275 +123 6 275 271 258 272 +124 1 272 273 274 287 +125 2 274 273 272 287 +126 3 287 273 272 274 +127 4 273 287 288 291 +128 5 288 287 273 291 +129 6 291 287 273 288 +130 1 288 289 290 302 +131 2 290 289 288 302 +132 15 302 289 288 290 +133 13 294 295 296 297 +134 14 296 295 294 297 +135 14 297 295 294 296 +136 16 289 302 303 309 +137 17 303 302 289 309 +138 18 309 302 289 303 +139 1 303 304 305 316 +140 2 305 304 303 316 +141 3 316 304 303 305 +142 4 304 316 317 320 +143 5 317 316 304 320 +144 6 320 316 304 317 +145 1 317 318 319 327 +146 2 319 318 317 327 +147 3 327 318 317 319 +148 4 318 327 328 331 +149 5 328 327 318 331 +150 6 331 327 318 328 +151 1 328 329 330 339 +152 2 330 329 328 339 +153 3 339 329 328 330 +154 13 333 334 335 336 +155 14 335 334 333 336 +156 14 336 334 333 335 +157 4 329 339 340 343 +158 5 340 339 329 343 +159 6 343 339 329 340 +160 1 340 341 342 353 +161 2 342 341 340 353 +162 3 353 341 340 342 +163 4 341 353 354 357 +164 5 354 353 341 357 +165 6 357 353 341 354 +166 1 354 355 356 372 +167 2 356 355 354 372 +168 3 372 355 354 356 +169 4 355 372 373 376 +170 5 373 372 355 376 +171 6 376 372 355 373 +172 1 373 374 375 387 +173 2 375 374 373 387 +174 3 387 374 373 375 +175 13 379 380 381 382 +176 14 381 380 379 382 +177 14 382 380 379 381 +178 4 374 387 388 391 +179 5 388 387 374 391 +180 6 391 387 374 388 +181 1 388 389 390 401 +182 2 390 389 388 401 +183 3 401 389 388 390 +184 7 393 394 395 396 +185 2 395 394 393 396 +186 3 396 394 393 395 +187 4 394 396 399 400 +188 6 399 396 394 400 +189 6 400 396 394 399 +190 4 389 401 402 405 +191 5 402 401 389 405 +192 6 405 401 389 402 +193 1 402 403 404 417 +194 2 404 403 402 417 +195 3 417 403 402 404 +196 4 403 417 418 421 +197 5 418 417 403 421 +198 6 421 417 403 418 +199 1 418 419 420 439 +200 2 420 419 418 439 +201 3 439 419 418 420 +202 4 419 439 440 443 +203 5 440 439 419 443 +204 6 443 439 419 440 +205 1 440 441 442 449 +206 2 442 441 440 449 +207 3 449 441 440 442 +208 4 441 449 450 453 +209 5 450 449 441 453 +210 6 453 449 441 450 +211 1 450 451 452 471 +212 2 452 451 450 471 +213 3 471 451 450 452 +214 4 451 471 472 475 +215 5 472 471 451 475 +216 6 475 471 451 472 +217 1 472 473 474 490 +218 2 474 473 472 490 +219 3 490 473 472 474 +220 4 473 490 491 494 +221 5 491 490 473 494 +222 6 494 490 473 491 +223 1 491 492 493 507 +224 2 493 492 491 507 +225 3 507 492 491 493 +226 7 497 498 499 500 +227 2 499 498 497 500 +228 3 500 498 497 499 +229 4 498 500 505 506 +230 6 505 500 498 506 +231 6 506 500 498 505 +232 4 492 507 508 511 +233 5 508 507 492 511 +234 6 511 507 492 508 +235 1 508 509 510 519 +236 2 510 509 508 519 +237 3 519 509 508 510 +238 13 513 514 515 516 +239 14 515 514 513 516 +240 14 516 514 513 515 +241 4 509 519 520 523 +242 5 520 519 509 523 +243 6 523 519 509 520 +244 1 520 521 522 541 +245 2 522 521 520 541 +246 3 541 521 520 522 +247 4 521 541 542 545 +248 5 542 541 521 545 +249 6 545 541 521 542 +250 1 542 543 544 556 +251 2 544 543 542 556 +252 3 556 543 542 544 +253 13 548 549 550 551 +254 14 550 549 548 551 +255 14 551 549 548 550 +256 4 543 556 557 560 +257 11 557 556 543 560 +258 6 560 556 543 557 +259 12 557 558 559 563 +260 2 559 558 557 563 +261 3 563 558 557 559 +262 4 558 563 564 567 +263 5 564 563 558 567 +264 6 567 563 558 564 +265 1 564 565 566 582 +266 2 566 565 564 582 +267 15 582 565 564 566 +268 16 565 582 583 589 +269 17 583 582 565 589 +270 18 589 582 565 583 +271 1 583 584 585 596 +272 2 585 584 583 596 +273 15 596 584 583 585 +274 16 584 596 597 603 +275 17 597 596 584 603 +276 18 603 596 584 597 +277 1 597 598 599 610 +278 2 599 598 597 610 +279 3 610 598 597 599 +280 4 598 610 611 614 +281 5 611 610 598 614 +282 6 614 610 598 611 +283 1 611 612 613 622 +284 2 613 612 611 622 +285 3 622 612 611 613 +286 13 616 617 618 619 +287 14 618 617 616 619 +288 14 619 617 616 618 +289 4 612 622 623 626 +290 5 623 622 612 626 +291 6 626 622 612 623 +292 1 623 624 625 639 +293 2 625 624 623 639 +294 3 639 624 623 625 +295 7 629 630 631 632 +296 2 631 630 629 632 +297 3 632 630 629 631 +298 4 630 632 637 638 +299 6 637 632 630 638 +300 6 638 632 630 637 +301 4 624 639 640 643 +302 5 640 639 624 643 +303 6 643 639 624 640 +304 1 640 641 642 656 +305 2 642 641 640 656 +306 3 656 641 640 642 +307 7 646 647 648 649 +308 2 648 647 646 649 +309 3 649 647 646 648 +310 4 647 649 654 655 +311 6 654 649 647 655 +312 6 655 649 647 654 +313 4 641 656 657 660 +314 5 657 656 641 660 +315 6 660 656 641 657 +316 1 657 658 659 680 +317 2 659 658 657 680 +318 3 680 658 657 659 +319 19 664 665 666 675 +320 20 666 665 664 675 +321 21 675 665 664 666 +322 22 665 666 667 668 +323 22 667 666 665 668 +324 22 668 666 665 667 +325 20 666 667 676 677 +326 21 676 667 666 677 +327 21 677 667 666 676 +328 20 666 668 678 679 +329 21 678 668 666 679 +330 21 679 668 666 678 +331 4 658 680 681 684 +332 5 681 680 658 684 +333 6 684 680 658 681 +334 1 681 682 683 699 +335 2 683 682 681 699 +336 3 699 682 681 683 +337 4 682 699 700 703 +338 5 700 699 682 703 +339 6 703 699 682 700 +340 1 700 701 702 718 +341 2 702 701 700 718 +342 3 718 701 700 702 +343 4 701 718 719 722 +344 5 719 718 701 722 +345 6 722 718 701 719 +346 1 719 720 721 738 +347 2 721 720 719 738 +348 3 738 720 719 721 +349 8 724 725 726 727 +350 9 726 725 724 727 +351 9 727 725 724 726 +352 9 725 726 728 733 +353 9 728 726 725 733 +354 10 733 726 725 728 +355 9 725 727 729 734 +356 9 729 727 725 734 +357 10 734 727 725 729 +358 9 726 728 730 735 +359 9 730 728 726 735 +360 10 735 728 726 730 +361 9 727 729 730 736 +362 9 730 729 727 736 +363 10 736 729 727 730 +364 9 728 730 729 737 +365 9 729 730 728 737 +366 10 737 730 728 729 +367 4 720 738 739 742 +368 5 739 738 720 742 +369 6 742 738 720 739 +370 1 739 740 741 748 +371 2 741 740 739 748 +372 3 748 740 739 741 +373 4 740 748 749 752 +374 11 749 748 740 752 +375 6 752 748 740 749 +376 12 749 750 751 755 +377 2 751 750 749 755 +378 3 755 750 749 751 +379 4 750 755 756 759 +380 5 756 755 750 759 +381 6 759 755 750 756 +382 1 756 757 758 777 +383 2 758 757 756 777 +384 3 777 757 756 758 +385 4 757 777 778 781 +386 5 778 777 757 781 +387 6 781 777 757 778 +388 1 778 779 780 794 +389 2 780 779 778 794 +390 3 794 779 778 780 +391 7 784 785 786 787 +392 2 786 785 784 787 +393 3 787 785 784 786 +394 4 785 787 792 793 +395 6 792 787 785 793 +396 6 793 787 785 792 +397 4 779 794 795 798 +398 5 795 794 779 798 +399 6 798 794 779 795 +400 1 795 796 797 813 +401 2 797 796 795 813 +402 3 813 796 795 797 +403 4 796 813 814 817 +404 5 814 813 796 817 +405 6 817 813 796 814 +406 1 814 815 816 828 +407 2 816 815 814 828 +408 3 828 815 814 816 +409 13 820 821 822 823 +410 14 822 821 820 823 +411 14 823 821 820 822 +412 4 815 828 829 832 +413 5 829 828 815 832 +414 6 832 828 815 829 +415 1 829 830 831 840 +416 2 831 830 829 840 +417 3 840 830 829 831 +418 13 834 835 836 837 +419 14 836 835 834 837 +420 14 837 835 834 836 +421 4 830 840 841 844 +422 11 841 840 830 844 +423 6 844 840 830 841 +424 12 841 842 843 847 +425 2 843 842 841 847 +426 3 847 842 841 843 +427 4 842 847 848 851 +428 5 848 847 842 851 +429 6 851 847 842 848 +430 1 848 849 850 871 +431 2 850 849 848 871 +432 3 871 849 848 850 +433 19 855 856 857 866 +434 20 857 856 855 866 +435 21 866 856 855 857 +436 22 856 857 858 859 +437 22 858 857 856 859 +438 22 859 857 856 858 +439 20 857 858 867 868 +440 21 867 858 857 868 +441 21 868 858 857 867 +442 20 857 859 869 870 +443 21 869 859 857 870 +444 21 870 859 857 869 +445 4 849 871 872 875 +446 5 872 871 849 875 +447 6 875 871 849 872 +448 1 872 873 874 885 +449 2 874 873 872 885 +450 3 885 873 872 874 +451 4 873 885 886 889 +452 5 886 885 873 889 +453 6 889 885 873 886 +454 1 886 887 888 904 +455 2 888 887 886 904 +456 3 904 887 886 888 +457 4 887 904 905 908 +458 5 905 904 887 908 +459 6 908 904 887 905 +460 1 905 906 907 915 +461 2 907 906 905 915 +462 3 915 906 905 907 +463 4 906 915 916 919 +464 5 916 915 906 919 +465 6 919 915 906 916 +466 1 916 917 918 927 +467 2 918 917 916 927 +468 3 927 917 916 918 +469 13 921 922 923 924 +470 14 923 922 921 924 +471 14 924 922 921 923 +472 4 917 927 928 931 +473 5 928 927 917 931 +474 6 931 927 917 928 +475 1 928 929 930 948 +476 2 930 929 928 948 +477 3 948 929 928 930 +478 8 933 934 935 936 +479 9 935 934 933 936 +480 9 936 934 933 935 +481 9 934 935 937 943 +482 9 937 935 934 943 +483 10 943 935 934 937 +484 9 934 936 938 944 +485 9 938 936 934 944 +486 10 944 936 934 938 +487 9 935 937 939 945 +488 9 939 937 935 945 +489 10 945 937 935 939 +490 9 936 938 939 946 +491 9 939 938 936 946 +492 10 946 938 936 939 +493 9 937 939 938 940 +494 9 938 939 937 940 +495 23 940 939 937 938 +496 4 929 948 949 952 +497 5 949 948 929 952 +498 6 952 948 929 949 +499 1 949 950 951 962 +500 2 951 950 949 962 +501 3 962 950 949 951 +502 7 954 955 956 957 +503 2 956 955 954 957 +504 3 957 955 954 956 +505 4 955 957 960 961 +506 6 960 957 955 961 +507 6 961 957 955 960 +508 4 950 962 963 966 +509 5 963 962 950 966 +510 6 966 962 950 963 +511 1 963 964 965 981 +512 2 965 964 963 981 +513 3 981 964 963 965 +514 4 964 981 982 985 +515 5 982 981 964 985 +516 6 985 981 964 982 +517 1 982 983 984 998 +518 2 984 983 982 998 +519 3 998 983 982 984 +520 7 988 989 990 991 +521 2 990 989 988 991 +522 3 991 989 988 990 +523 4 989 991 996 997 +524 6 996 991 989 997 +525 6 997 991 989 996 +526 4 983 998 999 1002 +527 5 999 998 983 1002 +528 6 1002 998 983 999 +529 1 999 1000 1001 1020 +530 2 1001 1000 999 1020 +531 3 1020 1000 999 1001 +532 4 1000 1020 1021 1024 +533 5 1021 1020 1000 1024 +534 6 1024 1020 1000 1021 +535 1 1021 1022 1023 1035 +536 2 1023 1022 1021 1035 +537 3 1035 1022 1021 1023 +538 13 1027 1028 1029 1030 +539 14 1029 1028 1027 1030 +540 14 1030 1028 1027 1029 +541 4 1022 1035 1036 1039 +542 5 1036 1035 1022 1039 +543 6 1039 1035 1022 1036 +544 1 1036 1037 1038 1046 +545 2 1038 1037 1036 1046 +546 3 1046 1037 1036 1038 +547 4 1037 1046 1047 1050 +548 5 1047 1046 1037 1050 +549 6 1050 1046 1037 1047 +550 1 1047 1048 1049 1060 +551 2 1049 1048 1047 1060 +552 3 1060 1048 1047 1049 +553 4 1048 1060 1061 1064 +554 5 1061 1060 1048 1064 +555 6 1064 1060 1048 1061 +556 1 1061 1062 1063 1079 +557 2 1063 1062 1061 1079 +558 3 1079 1062 1061 1063 +559 4 1062 1079 1080 1083 +560 5 1080 1079 1062 1083 +561 6 1083 1079 1062 1080 +562 1 1080 1081 1082 1097 +563 2 1082 1081 1080 1097 +564 3 1097 1081 1080 1082 +565 24 1085 1086 1087 1088 +566 25 1087 1086 1085 1088 +567 26 1088 1086 1085 1087 +568 27 1086 1087 1089 1093 +569 28 1089 1087 1086 1093 +570 29 1093 1087 1086 1089 +571 26 1086 1088 1090 1094 +572 25 1090 1088 1086 1094 +573 30 1094 1088 1086 1090 +574 31 1087 1089 1090 1095 +575 31 1090 1089 1087 1095 +576 32 1095 1089 1087 1090 +577 27 1088 1090 1089 1096 +578 28 1089 1090 1088 1096 +579 29 1096 1090 1088 1089 +580 4 1081 1097 1098 1101 +581 5 1098 1097 1081 1101 +582 6 1101 1097 1081 1098 +583 1 1098 1099 1100 1116 +584 2 1100 1099 1098 1116 +585 3 1116 1099 1098 1100 +586 4 1099 1116 1117 1120 +587 5 1117 1116 1099 1120 +588 6 1120 1116 1099 1117 +589 1 1117 1118 1119 1132 +590 2 1119 1118 1117 1132 +591 3 1132 1118 1117 1119 +592 4 1118 1132 1133 1136 +593 5 1133 1132 1118 1136 +594 6 1136 1132 1118 1133 +595 1 1133 1134 1135 1151 +596 2 1135 1134 1133 1151 +597 3 1151 1134 1133 1135 +598 4 1134 1151 1152 1155 +599 5 1152 1151 1134 1155 +600 6 1155 1151 1134 1152 +601 1 1152 1153 1154 1175 +602 2 1154 1153 1152 1175 +603 3 1175 1153 1152 1154 +604 19 1159 1160 1161 1170 +605 20 1161 1160 1159 1170 +606 21 1170 1160 1159 1161 +607 22 1160 1161 1162 1163 +608 22 1162 1161 1160 1163 +609 22 1163 1161 1160 1162 +610 20 1161 1162 1171 1172 +611 21 1171 1162 1161 1172 +612 21 1172 1162 1161 1171 +613 20 1161 1163 1173 1174 +614 21 1173 1163 1161 1174 +615 21 1174 1163 1161 1173 +616 4 1153 1175 1176 1179 +617 5 1176 1175 1153 1179 +618 6 1179 1175 1153 1176 +619 1 1176 1177 1178 1194 +620 2 1178 1177 1176 1194 +621 3 1194 1177 1176 1178 +622 4 1177 1194 1195 1198 +623 5 1195 1194 1177 1198 +624 6 1198 1194 1177 1195 +625 1 1195 1196 1197 1218 +626 2 1197 1196 1195 1218 +627 3 1218 1196 1195 1197 +628 19 1202 1203 1204 1213 +629 20 1204 1203 1202 1213 +630 21 1213 1203 1202 1204 +631 22 1203 1204 1205 1206 +632 22 1205 1204 1203 1206 +633 22 1206 1204 1203 1205 +634 20 1204 1205 1214 1215 +635 21 1214 1205 1204 1215 +636 21 1215 1205 1204 1214 +637 20 1204 1206 1216 1217 +638 21 1216 1206 1204 1217 +639 21 1217 1206 1204 1216 +640 4 1196 1218 1219 1222 +641 11 1219 1218 1196 1222 +642 6 1222 1218 1196 1219 +643 12 1219 1220 1221 1225 +644 2 1221 1220 1219 1225 +645 3 1225 1220 1219 1221 +646 4 1220 1225 1226 1229 +647 11 1226 1225 1220 1229 +648 6 1229 1225 1220 1226 +649 33 1226 1227 1228 1232 +650 14 1228 1227 1226 1232 +651 14 1232 1227 1226 1228 Bond Coeffs @@ -21820,117 +25781,765 @@ Bond Coeffs Angle Coeffs -1 0 108.5 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 -2 0 105.4 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 -3 0 110.7 75.2 -60.3209966714 13.8245541012 -9.90110754559 17.8291669244 -4 0 109.3 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 -5 0 110.7 75.2 -60.3209966714 13.8245541012 -9.90110754559 17.8291669244 -6 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 -7 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 -8 0 112.8 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -9 1 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 -10 1 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 -11 1 124.2 77.0 -61.7648503151 14.1554609813 -10.1381021411 18.2559288987 -12 2 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -13 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -14 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -15 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 -16 2 110.1 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 -17 2 110.8 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 -18 0 95.9 60.4 -48.4493111563 11.1037641983 -7.95248531587 14.3202351361 -19 2 108.0 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 -20 1 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 -21 1 121.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 -22 1 117.0 32.0 -25.6685092219 5.88278897922 -4.21323725344 7.5868795423 -23 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 -24 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 -25 0 111.3 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -26 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 -27 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 -28 1 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 -29 1 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 -30 1 123.0 29.5 -23.6631569389 5.42319609022 -3.88407809302 6.99415457806 -31 0 111.3 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -32 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 -33 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -34 2 110.2 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -35 2 110.2 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -36 0 110.6 38.9 -31.2032815228 7.15126535287 -5.12171653622 9.22280044361 -37 2 109.3 39.6 -31.7647801621 7.27995136179 -5.21388110114 9.3887634336 -38 1 122.3 33.8 -27.1123628656 6.2136958593 -4.45023184895 8.01364151656 -39 1 121.7 54.7 -43.8771079511 10.0558924114 -7.2020024301 12.9688222176 -40 2 120.0 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 -41 2 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -42 0 109.5 56.1 -45.0001052296 10.3132644292 -7.38633155994 13.3007481976 -43 0 109.3 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 -44 0 110.9 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 -45 0 107.0 43.5 -34.8931297235 7.99691626863 -5.7273693914 10.3134143778 -46 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 -47 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 -48 2 110.0 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 -49 0 106.8 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -50 2 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -51 1 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 -52 1 117.0 32.0 -25.6685092219 5.88278897922 -4.21323725344 7.5868795423 -53 0 109.8 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 -54 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 -55 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 -56 0 107.6 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 -57 1 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 -58 1 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 -59 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 -60 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 -61 1 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 -62 1 134.0 57.6 -46.2033165993 10.5890201626 -7.5838270562 13.6563831761 -63 1 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 -64 1 124.2 77.0 -61.7648503151 14.1554609813 -10.1381021411 18.2559288987 -65 1 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 -66 1 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 -67 1 112.5 54.7 -43.8771079511 10.0558924114 -7.2020024301 12.9688222176 -68 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 -69 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 -70 0 104.0 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -71 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 -72 0 112.8 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -73 0 104.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -74 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -75 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -76 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 -77 0 104.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 -78 0 104.0 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -79 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 -80 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 -81 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 -82 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 -83 2 108.9 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 -84 0 106.8 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 -85 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 -86 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 -87 0 109.5 56.1 -45.0001052296 10.3132644292 -7.38633155994 13.3007481976 -88 0 111.0 54.6 -43.7968938598 10.0375086958 -7.18883606369 12.9451132191 -89 1 120.4 52.5 -42.1123979421 9.65145066903 -6.91234236893 12.4472242491 -90 1 122.4 13.7 -10.9893305106 2.51856903173 -1.80379219913 3.24813280405 -91 1 120.5 41.7 -33.4492760797 7.66600938855 -5.49037479589 9.88665240356 -92 1 120.0 28.8 -23.1016582997 5.2945100813 -3.7919135281 6.82819158807 -93 1 120.0 29.5 -23.6631569389 5.42319609022 -3.88407809302 6.99415457806 -94 1 120.0 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 -95 0 109.0 25.9 -20.7754496514 4.76138233006 -3.41008890201 6.14063062955 -96 0 112.7 38.8 -31.1230674315 7.13288163731 -5.1085501698 9.19909144504 -97 0 109.5 39.6 -31.7647801621 7.27995136179 -5.21388110114 9.3887634336 -98 1 122.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 -99 1 131.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 -100 1 104.7 47.5 -38.1016933762 8.73226489103 -6.25402404808 11.2617743206 -101 1 110.8 86.3 -69.2247608077 15.8651465283 -11.3625742179 20.4608657656 -102 1 125.5 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 -103 1 125.5 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 -104 1 128.0 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 -105 1 122.5 38.1 -30.5615687923 7.00419562839 -5.01638560488 9.03312845505 -106 1 110.3 28.8 -23.1016582997 5.2945100813 -3.7919135281 6.82819158807 -107 1 122.5 38.1 -30.5615687923 7.00419562839 -5.01638560488 9.03312845505 -108 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 -109 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 -110 1 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 -111 0 108.5 48.7 -39.064262472 8.95286947775 -6.41202044508 11.5462823034 +1 0 0 108.5 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 +2 0 0 105.4 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 +3 0 0 110.7 75.2 -60.3209966714 13.8245541012 -9.90110754559 17.8291669244 +4 0 0 109.3 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 +5 0 0 110.7 75.2 -60.3209966714 13.8245541012 -9.90110754559 17.8291669244 +6 0 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 +7 0 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 +8 0 0 112.8 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +9 1 0 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 +10 1 0 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 +11 1 0 124.2 77.0 -61.7648503151 14.1554609813 -10.1381021411 18.2559288987 +12 0 0 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +13 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +14 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +15 0 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 +16 0 0 110.1 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 +17 0 0 110.8 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 +18 0 0 95.9 60.4 -48.4493111563 11.1037641983 -7.95248531587 14.3202351361 +19 0 0 108.0 53.2 -42.6738965813 9.78013667795 -7.00450693385 12.6131872391 +20 1 0 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 +21 1 0 121.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 +22 1 0 117.0 32.0 -25.6685092219 5.88278897922 -4.21323725344 7.5868795423 +23 0 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 +24 0 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 +25 0 0 111.3 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +26 0 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 +27 0 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 +28 1 0 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 +29 1 0 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 +30 1 0 123.0 29.5 -23.6631569389 5.42319609022 -3.88407809302 6.99415457806 +31 0 0 111.3 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +32 0 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 +33 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +34 0 0 110.2 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +35 0 0 110.2 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +36 0 0 110.6 38.9 -31.2032815228 7.15126535287 -5.12171653622 9.22280044361 +37 0 0 109.3 39.6 -31.7647801621 7.27995136179 -5.21388110114 9.3887634336 +38 1 0 122.3 33.8 -27.1123628656 6.2136958593 -4.45023184895 8.01364151656 +39 1 0 121.7 54.7 -43.8771079511 10.0558924114 -7.2020024301 12.9688222176 +40 1 0 120.0 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 +41 0 0 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +42 0 0 109.5 56.1 -45.0001052296 10.3132644292 -7.38633155994 13.3007481976 +43 0 0 109.3 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 +44 0 0 110.9 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 +45 0 0 107.0 43.5 -34.8931297235 7.99691626863 -5.7273693914 10.3134143778 +46 0 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 +47 0 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 +48 0 0 110.0 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 +49 0 0 106.8 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +50 0 0 111.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +51 1 0 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 +52 1 0 117.0 32.0 -25.6685092219 5.88278897922 -4.21323725344 7.5868795423 +53 0 0 109.8 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 +54 0 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 +55 0 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 +56 0 0 107.6 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 +57 1 0 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 +58 1 0 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 +59 0 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 +60 0 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 +61 1 0 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 +62 1 0 134.0 57.6 -46.2033165993 10.5890201626 -7.5838270562 13.6563831761 +63 1 0 113.4 70.0 -56.1498639228 12.868600892 -9.21645649191 16.5962989988 +64 1 0 124.2 77.0 -61.7648503151 14.1554609813 -10.1381021411 18.2559288987 +65 1 0 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 +66 1 0 122.0 50.0 -40.1070456592 9.19185778003 -6.5831832085 11.8544992848 +67 1 0 112.5 54.7 -43.8771079511 10.0558924114 -7.2020024301 12.9688222176 +68 0 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 +69 0 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 +70 0 0 104.0 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +71 0 0 110.6 58.0 -46.5241729646 10.6625550248 -7.63649252187 13.7512191704 +72 0 0 112.8 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +73 0 0 104.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +74 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +75 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +76 0 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 +77 0 0 104.0 48.2 -38.6631920154 8.86095089995 -6.346188613 11.4277373106 +78 0 0 104.0 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +79 0 0 111.0 55.0 -44.1177502251 10.111043558 -7.24150152936 13.0399492133 +80 0 0 110.7 42.0 -33.6899183537 7.72116053523 -5.52987389514 9.95777939927 +81 0 0 107.8 40.0 -32.0856365273 7.35348622403 -5.2665465668 9.48359942788 +82 0 0 107.5 59.7 -47.887812517 10.9750781894 -7.86032075095 14.1542721461 +83 0 0 108.9 59.0 -47.3263138778 10.8463921804 -7.76815618604 13.9883091561 +84 0 0 106.8 54.0 -43.3156093119 9.92720640244 -7.10983786519 12.8028592276 +85 0 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 +86 0 0 110.6 47.6 -38.1819074675 8.75064860659 -6.2671904145 11.2854833192 +87 0 0 109.5 56.1 -45.0001052296 10.3132644292 -7.38633155994 13.3007481976 +88 0 0 111.0 54.6 -43.7968938598 10.0375086958 -7.18883606369 12.9451132191 +89 1 0 120.4 52.5 -42.1123979421 9.65145066903 -6.91234236893 12.4472242491 +90 1 0 122.4 13.7 -10.9893305106 2.51856903173 -1.80379219913 3.24813280405 +91 1 0 120.5 41.7 -33.4492760797 7.66600938855 -5.49037479589 9.88665240356 +92 1 0 120.0 28.8 -23.1016582997 5.2945100813 -3.7919135281 6.82819158807 +93 1 0 120.0 29.5 -23.6631569389 5.42319609022 -3.88407809302 6.99415457806 +94 1 0 120.0 43.2 -34.6524874495 7.94176512195 -5.68787029215 10.2422873821 +95 0 0 109.0 25.9 -20.7754496514 4.76138233006 -3.41008890201 6.14063062955 +96 0 0 112.7 38.8 -31.1230674315 7.13288163731 -5.1085501698 9.19909144504 +97 0 0 109.5 39.6 -31.7647801621 7.27995136179 -5.21388110114 9.3887634336 +98 1 0 122.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 +99 1 0 131.0 36.0 -28.8770728746 6.61813760162 -4.73989191012 8.53523948509 +100 1 0 104.7 47.5 -38.1016933762 8.73226489103 -6.25402404808 11.2617743206 +101 1 0 110.8 86.3 -69.2247608077 15.8651465283 -11.3625742179 20.4608657656 +102 1 0 125.5 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 +103 1 0 125.5 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 +104 1 0 128.0 35.3 -28.3155742354 6.4894515927 -4.6477273452 8.3692764951 +105 1 0 122.5 38.1 -30.5615687923 7.00419562839 -5.01638560488 9.03312845505 +106 1 0 110.3 28.8 -23.1016582997 5.2945100813 -3.7919135281 6.82819158807 +107 1 0 122.5 38.1 -30.5615687923 7.00419562839 -5.01638560488 9.03312845505 +108 0 0 109.6 61.0 -48.9305957042 11.2140664916 -8.03148351438 14.4624891275 +109 0 0 109.5 39.0 -31.2834956141 7.16964906843 -5.13488290263 9.24650944218 +110 1 0 122.4 80.0 -64.1712730547 14.7069724481 -10.5330931336 18.9671988558 +111 0 1 108.5 48.7 -39.064262472 8.95286947775 -6.41202044508 11.5462823034 + +Dihedral Coeffs + +1 3 0.6195 1 0.0 -0.2025 2 180.0 0.0175 3 0.0 +2 3 0.0 1 0.0 -0.0405 2 180.0 0.185 3 0.0 +3 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +4 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +5 3 -0.1985 1 0.0 1.098 2 180.0 -0.1855 3 0.0 +6 3 0.061 1 0.0 0.0455 2 180.0 0.012 3 0.0 +7 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +8 3 1.2615 1 0.0 0.4655 2 180.0 -0.205 3 0.0 +9 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +10 3 0.0 1 0.0 0.0 2 180.0 0.1175 3 0.0 +11 3 0.0 1 0.0 0.0 2 180.0 -0.005 3 0.0 +12 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +13 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +14 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +15 3 0.2235 1 0.0 0.8535 2 180.0 -0.671 3 0.0 +16 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +17 3 0.0 1 0.0 0.5 2 180.0 0.4 3 0.0 +18 3 0.5 1 0.0 1.125 2 180.0 -1.125 3 0.0 +19 3 0.0 1 0.0 0.5 2 180.0 -0.275 3 0.0 +20 3 0.125 1 0.0 0.08 2 180.0 -0.9025 3 0.0 +21 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +22 3 0.0 1 0.0 0.0 2 180.0 0.2375 3 0.0 +23 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +24 3 -0.5305 1 0.0 0.066 2 180.0 0.165 3 0.0 +25 3 0.0 1 0.0 0.0 2 180.0 0.33 3 0.0 +26 3 0.397 1 0.0 -0.3195 2 180.0 0.36 3 0.0 +27 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +28 3 0.9995 1 0.0 0.0105 2 180.0 0.0 3 0.0 +29 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +30 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +31 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +32 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +33 3 -0.844 1 0.0 2.1245 2 180.0 0.0 3 0.0 +34 3 0.185 1 0.0 0.297 2 180.0 -0.113 3 0.0 +35 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +36 3 -0.1285 1 0.0 -0.11 2 180.0 0.0 3 0.0 +37 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +38 3 0.227 1 0.0 0.04 2 180.0 -0.155 3 0.0 +39 3 -0.2375 1 0.0 0.3875 2 180.0 0.021 3 0.0 +40 3 -0.077 1 0.0 0.022 2 180.0 -0.043 3 0.0 +41 3 0.0 1 0.0 0.0 2 180.0 0.115 3 0.0 +42 3 0.0 1 0.0 0.5 2 180.0 0.4 3 0.0 +43 3 0.9995 1 0.0 0.0105 2 180.0 0.0 3 0.0 +44 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +45 3 0.387 1 0.0 -0.843 2 180.0 0.0 3 0.0 +46 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +47 3 0.6715 1 0.0 0.0675 2 180.0 0.0 3 0.0 +48 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +49 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +50 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +51 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +52 3 0.2235 1 0.0 0.8535 2 180.0 -0.671 3 0.0 +53 3 0.428 1 0.0 0.4205 2 180.0 -0.187 3 0.0 +54 3 0.0 1 0.0 0.0 2 180.0 0.0455 3 0.0 +55 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +56 3 -0.3155 1 0.0 0.5335 2 180.0 -0.3515 3 0.0 +57 3 -1.142 1 0.0 0.67 2 180.0 0.0 3 0.0 +58 3 -1.6145 1 0.0 0.294 2 180.0 0.0 3 0.0 +59 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +60 3 -0.2475 1 0.0 0.36 2 180.0 -0.242 3 0.0 +61 3 0.0 1 0.0 0.0 2 180.0 -0.045 3 0.0 +62 3 -0.305 1 0.0 2.106 2 180.0 0.0 3 0.0 +63 3 0.0 1 0.0 2.052 2 180.0 0.0 3 0.0 +64 3 -0.335 1 0.0 2.002 2 180.0 0.0 3 0.0 +65 3 0.275 1 0.0 2.267 2 180.0 -0.275 3 0.0 +66 3 0.0 1 0.0 2.036 2 180.0 0.0 3 0.0 +67 3 0.076 1 0.0 -0.1155 2 180.0 0.189 3 0.0 +68 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +69 3 0.076 1 0.0 -0.1155 2 180.0 0.189 3 0.0 +70 3 0.0 1 0.0 0.032 2 180.0 0.3025 3 0.0 +71 3 0.0 1 0.0 0.0 2 180.0 0.187 3 0.0 +72 3 0.0 1 0.0 0.0 2 180.0 -0.055 3 0.0 +73 3 0.0 1 0.0 -0.0405 2 180.0 0.185 3 0.0 +74 3 -0.547 1 0.0 0.3105 2 180.0 0.009 3 0.0 +75 3 -0.269 1 0.0 0.3515 2 180.0 -0.083 3 0.0 +76 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +77 3 -0.686 1 0.0 0.116 2 180.0 0.2 3 0.0 +78 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +79 3 -0.686 1 0.0 0.116 2 180.0 0.2 3 0.0 +80 3 0.0 1 0.0 0.0 2 180.0 0.133 3 0.0 +81 3 -0.4495 1 0.0 0.539 2 180.0 -0.1705 3 0.0 +82 3 0.574 1 0.0 -0.1445 2 180.0 -0.2785 3 0.0 +83 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +84 3 -0.3155 1 0.0 0.5335 2 180.0 -0.3515 3 0.0 +85 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +86 3 0.5 1 0.0 1.125 2 180.0 -1.125 3 0.0 +87 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +88 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +89 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +90 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +91 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +92 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +93 3 0.0 1 0.0 0.0 2 180.0 0.1175 3 0.0 +94 3 0.0 1 0.0 0.0 2 180.0 -0.005 3 0.0 +95 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +96 3 0.0 1 0.0 0.5 2 180.0 0.4 3 0.0 +97 3 -2.1285 1 0.0 -0.11 2 180.0 0.0 3 0.0 +98 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +99 3 0.0 1 0.0 0.05 2 180.0 0.0 3 0.0 +100 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +101 3 -0.902 1 0.0 1.806 2 180.0 -0.098 3 0.0 +102 3 0.0 1 0.0 0.0 2 180.0 -0.005 3 0.0 +103 3 0.1775 1 0.0 0.739 2 180.0 -0.448 3 0.0 +104 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +105 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +106 3 0.5 1 0.0 1.125 2 180.0 -1.125 3 0.0 +107 3 0.5 1 0.0 1.125 2 180.0 -1.125 3 0.0 +108 3 -0.12 1 0.0 -1.543 2 180.0 -0.9145 3 0.0 +109 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +110 3 1.5445 1 0.0 2.688 2 180.0 -0.9145 3 0.0 +111 3 1.108 1 0.0 0.1075 2 180.0 0.405 3 0.0 +112 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +113 3 1.108 1 0.0 0.1075 2 180.0 0.405 3 0.0 +114 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +115 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +116 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +117 3 1.108 1 0.0 0.1075 2 180.0 0.405 3 0.0 +118 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +119 3 -1.059 1 0.0 0.5865 2 180.0 0.0 3 0.0 +120 3 -0.1005 1 0.0 0.3435 2 180.0 0.0 3 0.0 +121 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +122 3 -0.464 1 0.0 0.5135 2 180.0 0.0 3 0.0 +123 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +124 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +125 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +126 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +127 3 1.1125 1 0.0 -0.626 2 180.0 -0.5335 3 0.0 +128 3 0.076 1 0.0 -0.1155 2 180.0 0.189 3 0.0 +129 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +130 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +131 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +132 3 -0.1005 1 0.0 0.3435 2 180.0 0.0 3 0.0 +133 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +134 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +135 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +136 3 0.096 1 0.0 -0.0575 2 180.0 -0.1545 3 0.0 +137 3 -0.832 1 0.0 -0.2655 2 180.0 0.0 3 0.0 +138 3 0.0 1 0.0 0.0 2 180.0 0.1705 3 0.0 +139 3 0.635 1 0.0 -0.5115 2 180.0 -0.3635 3 0.0 +140 3 0.0 1 0.0 0.0 2 180.0 0.137 3 0.0 +141 3 0.0825 1 0.0 0.7 2 180.0 0.0 3 0.0 +142 3 -0.589 1 0.0 0.5275 2 180.0 0.0 3 0.0 +143 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +144 3 0.0 1 0.0 0.5195 2 180.0 0.0 3 0.0 +145 3 -0.254 1 0.0 -0.1065 2 180.0 -0.1685 3 0.0 +146 3 -1.5315 1 0.0 -0.476 2 180.0 0.199 3 0.0 +147 3 0.0 1 0.0 0.0 2 180.0 0.09 3 0.0 +148 3 0.5455 1 0.0 0.224 2 180.0 0.298 3 0.0 +149 3 0.1405 1 0.0 0.332 2 180.0 -0.4235 3 0.0 +150 3 0.1775 1 0.0 0.739 2 180.0 -0.448 3 0.0 +151 3 -1.059 1 0.0 0.5865 2 180.0 0.0 3 0.0 +152 3 1.1125 1 0.0 -0.626 2 180.0 -0.5335 3 0.0 +153 3 -0.2675 1 0.0 -0.055 2 180.0 -0.0365 3 0.0 +154 3 0.0 1 0.0 0.0 2 180.0 0.187 3 0.0 +155 3 0.491 1 0.0 0.497 2 180.0 0.085 3 0.0 +156 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +157 3 0.0 1 0.0 0.0 2 180.0 -0.063 3 0.0 +158 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +159 3 0.0 1 0.0 2.25 2 180.0 0.0 3 0.0 +160 3 0.0 1 0.0 2.0 2 180.0 0.0 3 0.0 +161 3 0.0 1 0.0 2.235 2 180.0 0.0 3 0.0 +162 3 0.0 1 0.0 2.235 2 180.0 0.0 3 0.0 +163 3 0.0 1 0.0 1.0405 2 180.0 0.0 3 0.0 +164 3 0.0 1 0.0 0.0 2 180.0 0.0 3 0.0 +165 3 0.0695 1 0.0 -0.407 2 180.0 0.0 3 0.0 +166 3 0.0 1 0.0 0.0 2 180.0 0.25 3 0.0 +167 3 -0.9105 1 0.0 -1.2185 2 180.0 1.0295 3 0.0 +168 3 0.547 1 0.0 -0.08 2 180.0 0.2515 3 0.0 +169 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +170 3 0.0 1 0.0 0.0 2 180.0 0.1495 3 0.0 +171 3 0.0 1 0.0 2.106 2 180.0 0.0 3 0.0 +172 3 0.0 1 0.0 2.052 2 180.0 0.0 3 0.0 +173 3 0.0 1 0.0 2.106 2 180.0 0.0 3 0.0 +174 3 0.0 1 0.0 2.051 2 180.0 0.0 3 0.0 +175 3 0.45 1 0.0 4.0 2 180.0 0.0 3 0.0 +176 3 0.3775 1 0.0 1.5 2 180.0 0.0 3 0.0 +177 3 0.0 1 0.0 3.0 2 180.0 0.0 3 0.0 +178 3 -1.575 1 0.0 1.5 2 180.0 0.0 3 0.0 +179 3 0.0 1 0.0 4.0 2 180.0 0.0 3 0.0 +180 3 0.0 1 0.0 1.5 2 180.0 0.0 3 0.0 +181 3 -1.372 1 0.0 1.5 2 180.0 0.0 3 0.0 +182 3 -0.265 1 0.0 1.5 2 180.0 0.0 3 0.0 +183 3 0.0 1 0.0 1.5 2 180.0 0.0 3 0.0 +184 3 -0.265 1 0.0 1.5 2 180.0 0.0 3 0.0 +185 3 -0.5 1 0.0 1.0 2 180.0 1.0 3 0.0 +186 3 -0.428 1 0.0 0.024 2 180.0 -0.921 3 0.0 +187 3 0.0 1 0.0 4.0 2 180.0 0.0 3 0.0 +188 3 -0.0295 1 0.0 0.95 2 180.0 -0.0225 3 0.0 +189 3 -0.077 1 0.0 0.022 2 180.0 -0.043 3 0.0 + +Improper Coeffs + +1 49.6 +2 54.0 +3 107.9 +4 70.5 +5 41.7 +6 12.9 +7 20.9 +8 14.4 +9 14.4 +10 15.1 +11 41.7 +12 49.6 +13 121.6 +14 118.7 +15 49.6 +16 14.4 +17 14.4 +18 14.4 +19 0.7 +20 3.6 +21 12.9 +22 1.4 +23 14.4 +24 14.4 +25 14.4 +26 14.4 +27 15.1 +28 15.1 +29 12.9 +30 14.4 +31 14.4 +32 14.4 +33 121.6 + +BondAngle Coeffs + +1 4.3 4.3 1.448 1.015 +2 0.0 0.0 0.0 0.0 +3 18.7 18.7 1.509 1.448 +4 11.5 11.5 1.112 1.448 +5 18.7 18.7 1.525 1.448 +6 11.5 11.5 1.509 1.112 +7 18.7 18.7 1.509 1.525 +8 11.5 11.5 1.112 1.525 +9 18.7 18.7 1.2255 1.509 +10 18.7 18.7 1.345 1.509 +11 18.7 18.7 1.345 1.2255 +12 18.7 18.7 1.525 1.525 +13 11.5 11.5 1.525 1.112 +14 11.5 11.5 1.525 1.112 +15 0.0 0.0 0.0 0.0 +16 18.7 18.7 1.525 1.805 +17 11.5 11.5 1.112 1.805 +18 -5.75 -5.75 1.805 1.805 +19 11.5 11.5 1.112 1.805 +20 7.2 7.2 1.345 1.437 +21 4.3 4.3 1.345 1.028 +22 4.3 4.3 1.028 1.437 +23 18.7 18.7 1.437 1.509 +24 11.5 11.5 1.437 1.112 +25 18.7 18.7 1.437 1.525 +26 18.7 18.7 1.509 1.525 +27 11.5 11.5 1.509 1.112 +28 18.7 18.7 1.2255 1.509 +29 18.7 18.7 1.345 1.509 +30 0.0 0.0 0.0 0.0 +31 18.7 18.7 1.437 1.525 +32 18.7 18.7 1.509 1.525 +33 11.5 11.5 1.112 1.525 +34 18.7 18.7 1.525 1.525 +35 18.7 18.7 1.525 1.525 +36 18.7 18.7 1.525 1.499 +37 11.5 11.5 1.112 1.499 +38 18.7 18.7 1.499 1.3887 +39 18.7 18.7 1.3887 1.3887 +40 11.5 11.5 1.3887 1.1 +41 18.7 18.7 1.525 1.525 +42 18.7 18.7 1.525 1.448 +43 11.5 11.5 1.112 1.448 +44 4.3 4.3 1.448 1.015 +45 0.0 0.0 0.0 0.0 +46 18.7 18.7 1.525 1.413 +47 18.7 18.7 1.525 1.413 +48 11.5 11.5 1.112 1.413 +49 12.95 12.95 1.413 0.947 +50 18.7 18.7 1.525 1.525 +51 7.2 7.2 1.437 1.345 +52 4.3 4.3 1.437 1.028 +53 18.7 18.7 1.437 1.509 +54 11.5 11.5 1.437 1.112 +55 11.5 11.5 1.509 1.112 +56 0.0 0.0 0.0 0.0 +57 18.7 18.7 1.509 1.2255 +58 18.7 18.7 1.345 1.509 +59 18.7 18.7 1.525 1.509 +60 11.5 11.5 1.112 1.509 +61 18.7 18.7 1.509 1.2553 +62 18.7 18.7 1.2553 1.2553 +63 18.7 18.7 1.509 1.345 +64 18.7 18.7 1.2255 1.345 +65 7.2 7.2 1.345 1.437 +66 7.2 7.2 1.345 1.437 +67 7.2 7.2 1.437 1.437 +68 18.7 18.7 1.509 1.437 +69 11.5 11.5 1.112 1.437 +70 18.7 18.7 1.437 1.525 +71 18.7 18.7 1.509 1.525 +72 11.5 11.5 1.112 1.525 +73 18.7 18.7 1.525 1.5247 +74 11.5 11.5 1.525 1.112 +75 11.5 11.5 1.112 1.5247 +76 0.0 0.0 0.0 0.0 +77 18.7 18.7 1.5247 1.5247 +78 18.7 18.7 1.437 1.5247 +79 11.5 11.5 1.112 1.437 +80 11.5 11.5 1.112 1.5247 +81 0.0 0.0 0.0 0.0 +82 18.7 18.7 1.525 1.413 +83 11.5 11.5 1.112 1.413 +84 12.95 12.95 1.413 0.947 +85 18.7 18.7 1.525 1.509 +86 18.7 18.7 1.509 1.525 +87 18.7 18.7 1.446 1.525 +88 11.5 11.5 1.446 1.112 +89 7.2 7.2 1.446 1.325 +90 4.3 4.3 1.446 1.028 +91 4.3 4.3 1.028 1.325 +92 18.7 18.7 1.325 1.325 +93 0.0 0.0 0.0 0.0 +94 18.7 18.7 1.3887 1.355 +95 12.95 12.95 1.355 0.947 +96 18.7 18.7 1.525 1.493 +97 11.5 11.5 1.112 1.493 +98 18.7 18.7 1.493 1.373 +99 18.7 18.7 1.493 1.371 +100 18.7 18.7 1.373 1.371 +101 14.4 14.4 1.373 1.352 +102 4.3 4.3 1.03 1.373 +103 4.3 4.3 1.03 1.352 +104 11.5 11.5 1.371 1.081 +105 11.5 11.5 1.373 1.081 +106 18.7 18.7 1.352 1.352 +107 11.5 11.5 1.352 1.081 +108 18.7 18.7 1.437 1.509 +109 11.5 11.5 1.112 1.509 +110 18.7 18.7 1.509 1.2553 +111 0.0 0.0 0.0 0.0 + +UreyBradley Coeffs + +1 0.0 0.0 +2 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +10 0.0 0.0 +11 0.0 0.0 +12 0.0 0.0 +13 0.0 0.0 +14 0.0 0.0 +15 0.0 0.0 +16 0.0 0.0 +17 0.0 0.0 +18 0.0 0.0 +19 0.0 0.0 +20 0.0 0.0 +21 0.0 0.0 +22 0.0 0.0 +23 0.0 0.0 +24 0.0 0.0 +25 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +28 0.0 0.0 +29 0.0 0.0 +30 0.0 0.0 +31 0.0 0.0 +32 0.0 0.0 +33 0.0 0.0 +34 0.0 0.0 +35 0.0 0.0 +36 0.0 0.0 +37 0.0 0.0 +38 0.0 0.0 +39 0.0 0.0 +40 0.0 0.0 +41 0.0 0.0 +42 0.0 0.0 +43 0.0 0.0 +44 0.0 0.0 +45 0.0 0.0 +46 0.0 0.0 +47 0.0 0.0 +48 0.0 0.0 +49 0.0 0.0 +50 0.0 0.0 +51 0.0 0.0 +52 0.0 0.0 +53 0.0 0.0 +54 0.0 0.0 +55 0.0 0.0 +56 0.0 0.0 +57 0.0 0.0 +58 0.0 0.0 +59 0.0 0.0 +60 0.0 0.0 +61 0.0 0.0 +62 0.0 0.0 +63 0.0 0.0 +64 0.0 0.0 +65 0.0 0.0 +66 0.0 0.0 +67 0.0 0.0 +68 0.0 0.0 +69 0.0 0.0 +70 0.0 0.0 +71 0.0 0.0 +72 0.0 0.0 +73 0.0 0.0 +74 0.0 0.0 +75 0.0 0.0 +76 0.0 0.0 +77 0.0 0.0 +78 0.0 0.0 +79 0.0 0.0 +80 0.0 0.0 +81 0.0 0.0 +82 0.0 0.0 +83 0.0 0.0 +84 0.0 0.0 +85 0.0 0.0 +86 0.0 0.0 +87 0.0 0.0 +88 0.0 0.0 +89 0.0 0.0 +90 0.0 0.0 +91 0.0 0.0 +92 0.0 0.0 +93 0.0 0.0 +94 0.0 0.0 +95 0.0 0.0 +96 0.0 0.0 +97 0.0 0.0 +98 0.0 0.0 +99 0.0 0.0 +100 0.0 0.0 +101 0.0 0.0 +102 0.0 0.0 +103 0.0 0.0 +104 0.0 0.0 +105 0.0 0.0 +106 0.0 0.0 +107 0.0 0.0 +108 0.0 0.0 +109 0.0 0.0 +110 0.0 0.0 +111 -7.6 1.5537 + +BiTorsions + +1 1 3 20 21 22 37 +2 1 22 37 38 39 56 +3 1 39 56 57 58 76 +4 1 58 76 77 78 92 +5 1 78 92 93 94 114 +6 1 94 114 115 116 128 +7 1 116 128 129 130 147 +8 1 130 147 148 149 161 +9 2 149 161 162 163 168 +10 1 163 168 169 170 190 +11 1 170 190 191 192 204 +12 1 192 204 205 206 223 +13 1 206 223 224 225 237 +14 1 225 237 238 239 256 +15 1 239 256 257 258 271 +16 1 258 271 272 273 287 +17 3 273 287 288 289 302 +18 1 304 316 317 318 327 +19 1 318 327 328 329 339 +20 1 329 339 340 341 353 +21 1 341 353 354 355 372 +22 1 355 372 373 374 387 +23 1 374 387 388 389 401 +24 1 389 401 402 403 417 +25 1 403 417 418 419 439 +26 1 419 439 440 441 449 +27 1 441 449 450 451 471 +28 1 451 471 472 473 490 +29 1 473 490 491 492 507 +30 1 492 507 508 509 519 +31 1 509 519 520 521 541 +32 1 521 541 542 543 556 +33 2 543 556 557 558 563 +34 3 558 563 564 565 582 +35 1 598 610 611 612 622 +36 1 612 622 623 624 639 +37 1 624 639 640 641 656 +38 1 641 656 657 658 680 +39 1 658 680 681 682 699 +40 1 682 699 700 701 718 +41 1 701 718 719 720 738 +42 1 720 738 739 740 748 +43 2 740 748 749 750 755 +44 1 750 755 756 757 777 +45 1 757 777 778 779 794 +46 1 779 794 795 796 813 +47 1 796 813 814 815 828 +48 1 815 828 829 830 840 +49 2 830 840 841 842 847 +50 1 842 847 848 849 871 +51 1 849 871 872 873 885 +52 1 873 885 886 887 904 +53 1 887 904 905 906 915 +54 1 906 915 916 917 927 +55 1 917 927 928 929 948 +56 1 929 948 949 950 962 +57 1 950 962 963 964 981 +58 1 964 981 982 983 998 +59 1 983 998 999 1000 1020 +60 1 1000 1020 1021 1022 1035 +61 1 1022 1035 1036 1037 1046 +62 1 1037 1046 1047 1048 1060 +63 1 1048 1060 1061 1062 1079 +64 1 1062 1079 1080 1081 1097 +65 1 1081 1097 1098 1099 1116 +66 1 1099 1116 1117 1118 1132 +67 1 1118 1132 1133 1134 1151 +68 1 1134 1151 1152 1153 1175 +69 1 1153 1175 1176 1177 1194 +70 1 1177 1194 1195 1196 1218 +71 2 1196 1218 1219 1220 1225 + +PiTorsions + +1 1 2 4 3 20 21 24 +2 1 21 23 22 37 38 41 +3 1 27 29 28 30 35 36 +4 1 38 40 39 56 57 60 +5 1 57 59 58 76 77 80 +6 2 62 65 63 64 66 71 +7 2 62 64 63 65 67 72 +8 2 63 71 64 66 68 73 +9 2 63 72 65 67 68 74 +10 2 64 73 66 68 67 75 +11 2 65 74 67 68 66 75 +12 1 77 79 78 92 93 96 +13 1 93 95 94 114 115 118 +14 1 115 117 116 128 129 132 +15 1 129 131 130 147 148 151 +16 1 148 150 149 161 162 165 +17 1 162 164 163 168 169 172 +18 1 169 171 170 190 191 194 +19 1 191 193 192 204 205 208 +20 1 205 207 206 223 224 227 +21 1 224 226 225 237 238 241 +22 1 238 240 239 256 257 260 +23 1 257 259 258 271 272 275 +24 1 272 274 273 287 288 291 +25 3 288 290 289 302 303 309 +26 1 303 305 304 316 317 320 +27 1 317 319 318 327 328 331 +28 1 328 330 329 339 340 343 +29 1 340 342 341 353 354 357 +30 1 354 356 355 372 373 376 +31 1 373 375 374 387 388 391 +32 1 388 390 389 401 402 405 +33 1 393 395 394 396 399 400 +34 1 402 404 403 417 418 421 +35 1 418 420 419 439 440 443 +36 1 440 442 441 449 450 453 +37 1 450 452 451 471 472 475 +38 1 472 474 473 490 491 494 +39 1 491 493 492 507 508 511 +40 1 497 499 498 500 505 506 +41 1 508 510 509 519 520 523 +42 1 520 522 521 541 542 545 +43 1 542 544 543 556 557 560 +44 1 557 559 558 563 564 567 +45 3 564 566 565 582 583 589 +46 3 583 585 584 596 597 603 +47 1 597 599 598 610 611 614 +48 1 611 613 612 622 623 626 +49 1 623 625 624 639 640 643 +50 1 629 631 630 632 637 638 +51 1 640 642 641 656 657 660 +52 1 646 648 647 649 654 655 +53 1 657 659 658 680 681 684 +54 1 681 683 682 699 700 703 +55 1 700 702 701 718 719 722 +56 1 719 721 720 738 739 742 +57 2 724 727 725 726 728 733 +58 2 724 726 725 727 729 734 +59 2 725 733 726 728 730 735 +60 2 725 734 727 729 730 736 +61 2 726 735 728 730 729 737 +62 2 727 736 729 730 728 737 +63 1 739 741 740 748 749 752 +64 1 749 751 750 755 756 759 +65 1 756 758 757 777 778 781 +66 1 778 780 779 794 795 798 +67 1 784 786 785 787 792 793 +68 1 795 797 796 813 814 817 +69 1 814 816 815 828 829 832 +70 1 829 831 830 840 841 844 +71 1 841 843 842 847 848 851 +72 1 848 850 849 871 872 875 +73 1 872 874 873 885 886 889 +74 1 886 888 887 904 905 908 +75 1 905 907 906 915 916 919 +76 1 916 918 917 927 928 931 +77 1 928 930 929 948 949 952 +78 2 933 936 934 935 937 943 +79 2 933 935 934 936 938 944 +80 2 934 943 935 937 939 945 +81 2 934 944 936 938 939 946 +82 2 935 945 937 939 938 940 +83 2 936 946 938 939 937 940 +84 1 949 951 950 962 963 966 +85 1 954 956 955 957 960 961 +86 1 963 965 964 981 982 985 +87 1 982 984 983 998 999 1002 +88 1 988 990 989 991 996 997 +89 1 999 1001 1000 1020 1021 1024 +90 1 1021 1023 1022 1035 1036 1039 +91 1 1036 1038 1037 1046 1047 1050 +92 1 1047 1049 1048 1060 1061 1064 +93 1 1061 1063 1062 1079 1080 1083 +94 1 1080 1082 1081 1097 1098 1101 +95 4 1085 1088 1086 1087 1089 1093 +96 5 1085 1087 1086 1088 1090 1094 +97 6 1086 1093 1087 1089 1090 1095 +98 4 1086 1094 1088 1090 1089 1096 +99 6 1087 1095 1089 1090 1088 1096 +100 1 1098 1100 1099 1116 1117 1120 +101 1 1117 1119 1118 1132 1133 1136 +102 1 1133 1135 1134 1151 1152 1155 +103 1 1152 1154 1153 1175 1176 1179 +104 1 1176 1178 1177 1194 1195 1198 +105 1 1195 1197 1196 1218 1219 1222 +106 1 1219 1221 1220 1225 1226 1229 + +PiTorsion Coeffs + +1 6.85 +2 6.85 +3 6.85 +4 6.85 +5 6.85 +6 6.85 Tinker Types diff --git a/examples/amoeba/in.ubiquitin b/examples/amoeba/in.ubiquitin index 2491493c45..0c0bf475af 100644 --- a/examples/amoeba/in.ubiquitin +++ b/examples/amoeba/in.ubiquitin @@ -2,23 +2,34 @@ units real boundary p p p +atom_modify sort 0 0.0 + +atom_style amoeba -atom_style amoeba -#atom_modify sort 1000 7.0 bond_style class2 angle_style amoeba -dihedral_style none +dihedral_style fourier +improper_style amoeba # per-atom properties required by AMOEBA or HIPPO fix amtype all property/atom i_amtype ghost yes +fix pit all amoeba/pitorsion +fix_modify pit energy yes +fix bit all amoeba/bitorsion bitorsion.ubiquitin.data +fix_modify bit energy yes + fix extra all property/atom & i_amgroup i_ired i_xaxis i_yaxis i_zaxis d_pval ghost yes fix extra2 all property/atom i_polaxe -read_data data.ubiquitin fix amtype NULL "Tinker Types" +#read_data data.ubiquitin fix amtype NULL "Tinker Types" +read_data data.ubiquitin fix amtype NULL "Tinker Types" & + fix pit "pitorsion types" "PiTorsion Coeffs" & + fix pit pitorsions PiTorsions & + fix bit bitorsions BiTorsions -pair_style amoeba +pair_style amoeba exclude bitorsion pair_coeff * * amoeba_ubiquitin.prm amoeba_ubiquitin.key special_bonds lj/coul 0.5 0.5 0.5 one/five yes @@ -37,17 +48,8 @@ fix fqxfer all store/state 0 fx fy fz compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & - emol etotal press c_virial[*] - -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz + emol etotal #press c_virial[*] # zero step run -run 0 +run 0 diff --git a/examples/amoeba/in.water_box.amoeba b/examples/amoeba/in.water_box.amoeba index 63ada708f7..961a81d8b4 100644 --- a/examples/amoeba/in.water_box.amoeba +++ b/examples/amoeba/in.water_box.amoeba @@ -24,6 +24,8 @@ read_data data.water_box.amoeba fix amtype NULL "Tinker Types" pair_style amoeba pair_coeff * * amoeba_water.prm amoeba_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/examples/amoeba/in.water_box.hippo b/examples/amoeba/in.water_box.hippo index 6547a135b6..5f8dc1efd3 100644 --- a/examples/amoeba/in.water_box.hippo +++ b/examples/amoeba/in.water_box.hippo @@ -24,6 +24,8 @@ read_data data.water_box.hippo fix amtype NULL "Tinker Types" pair_style hippo pair_coeff * * hippo_water.prm hippo_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/examples/amoeba/in.water_dimer.amoeba b/examples/amoeba/in.water_dimer.amoeba index af22009269..fbeded4837 100644 --- a/examples/amoeba/in.water_dimer.amoeba +++ b/examples/amoeba/in.water_dimer.amoeba @@ -24,6 +24,8 @@ read_data data.water_dimer.amoeba fix amtype NULL "Tinker Types" pair_style amoeba pair_coeff * * amoeba_water.prm amoeba_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/examples/amoeba/in.water_dimer.hippo b/examples/amoeba/in.water_dimer.hippo index b19cbc0f26..59ff9cc5a7 100644 --- a/examples/amoeba/in.water_dimer.hippo +++ b/examples/amoeba/in.water_dimer.hippo @@ -24,6 +24,8 @@ read_data data.water_dimer.hippo fix amtype NULL "Tinker Types" pair_style hippo pair_coeff * * hippo_water.prm hippo_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/examples/amoeba/in.water_hexamer.amoeba b/examples/amoeba/in.water_hexamer.amoeba index cafab56053..5f02dbd41d 100644 --- a/examples/amoeba/in.water_hexamer.amoeba +++ b/examples/amoeba/in.water_hexamer.amoeba @@ -24,6 +24,8 @@ read_data data.water_hexamer.amoeba fix amtype NULL "Tinker Types" pair_style amoeba pair_coeff * * amoeba_water.prm amoeba_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/examples/amoeba/in.water_hexamer.hippo b/examples/amoeba/in.water_hexamer.hippo index 27cdb6e634..3ba2379326 100644 --- a/examples/amoeba/in.water_hexamer.hippo +++ b/examples/amoeba/in.water_hexamer.hippo @@ -24,6 +24,8 @@ read_data data.water_hexamer.hippo fix amtype NULL "Tinker Types" pair_style hippo pair_coeff * * hippo_water.prm hippo_water.key +special_bonds lj/coul 0.5 0.5 0.5 one/five yes + # thermo output compute virial all pressure NULL virial @@ -31,15 +33,6 @@ compute virial all pressure NULL virial thermo_style custom step temp epair ebond eangle edihed eimp & emol etotal press c_virial[*] -# DEBUG: setup force components this way so can dump them - -fix fhal all store/state 0 fx fy fz -fix frepulse all store/state 0 fx fy fz -fix fdisp all store/state 0 fx fy fz -fix fpolar all store/state 0 fx fy fz -fix fmpole all store/state 0 fx fy fz -fix fqxfer all store/state 0 fx fy fz - # zero step run run 0 diff --git a/src/AMOEBA/amoeba_charge_transfer.cpp b/src/AMOEBA/amoeba_charge_transfer.cpp index b815d06f83..5a7ee5b877 100644 --- a/src/AMOEBA/amoeba_charge_transfer.cpp +++ b/src/AMOEBA/amoeba_charge_transfer.cpp @@ -57,6 +57,7 @@ void PairAmoeba::charge_transfer() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; // neigh list @@ -138,12 +139,12 @@ void PairAmoeba::charge_transfer() // increment the total charge transfer energy and derivatives - fqxfer[i][0] -= frcx; - fqxfer[i][1] -= frcy; - fqxfer[i][2] -= frcz; - fqxfer[j][0] += frcx; - fqxfer[j][1] += frcy; - fqxfer[j][2] += frcz; + f[i][0] -= frcx; + f[i][1] -= frcy; + f[i][2] -= frcz; + f[j][0] += frcx; + f[j][1] += frcy; + f[j][2] += frcz; // increment the internal virial tensor components diff --git a/src/AMOEBA/amoeba_dispersion.cpp b/src/AMOEBA/amoeba_dispersion.cpp index bf9b3be11a..adda139ab0 100644 --- a/src/AMOEBA/amoeba_dispersion.cpp +++ b/src/AMOEBA/amoeba_dispersion.cpp @@ -44,11 +44,11 @@ void PairAmoeba::dispersion() // compute the real space portion of the Ewald summation - if (rspace_flag) dispersion_real(); + if (disp_rspace_flag) dispersion_real(); // compute the reciprocal space part of the Ewald summation - if (kspace_flag) dispersion_kspace(); + if (disp_kspace_flag) dispersion_kspace(); // compute the self-energy portion of the Ewald summation @@ -99,6 +99,7 @@ void PairAmoeba::dispersion_real() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; // neigh list @@ -202,12 +203,12 @@ void PairAmoeba::dispersion_real() dedx = de * xr; dedy = de * yr; dedz = de * zr; - fdisp[i][0] += dedx; - fdisp[i][1] += dedy; - fdisp[i][2] += dedz; - fdisp[j][0] -= dedx; - fdisp[j][1] -= dedy; - fdisp[j][2] -= dedz; + f[i][0] += dedx; + f[i][1] += dedy; + f[i][2] += dedz; + f[j][0] -= dedx; + f[j][1] -= dedy; + f[j][2] -= dedz; // increment the internal virial tensor components @@ -270,6 +271,7 @@ void PairAmoeba::dispersion_kspace() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; double volbox = domain->prd[0] * domain->prd[1] * domain->prd[2]; @@ -405,15 +407,14 @@ void PairAmoeba::dispersion_kspace() } fi = csix[iclass]; - fdisp[m][0] += fi * (recip[0][0]*de1 + recip[0][1]*de2 + recip[0][2]*de3); - fdisp[m][1] += fi * (recip[1][0]*de1 + recip[1][1]*de2 + recip[1][2]*de3); - fdisp[m][2] += fi * (recip[2][0]*de1 + recip[2][1]*de2 + recip[2][2]*de3); + f[m][0] += fi * (recip[0][0]*de1 + recip[0][1]*de2 + recip[0][2]*de3); + f[m][1] += fi * (recip[1][0]*de1 + recip[1][1]*de2 + recip[1][2]*de3); + f[m][2] += fi * (recip[2][0]*de1 + recip[2][1]*de2 + recip[2][2]*de3); } // account for the energy and virial correction terms term = csixpr * aewald*aewald*aewald / denom0; - if (me == 0) { edisp -= term; diff --git a/src/AMOEBA/amoeba_hal.cpp b/src/AMOEBA/amoeba_hal.cpp index 3cf69f2536..98cb3605b1 100644 --- a/src/AMOEBA/amoeba_hal.cpp +++ b/src/AMOEBA/amoeba_hal.cpp @@ -61,6 +61,7 @@ void PairAmoeba::hal() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; // neigh list @@ -158,31 +159,31 @@ void PairAmoeba::hal() "ghost comm is too short"); if (i == iv) { - fhal[i][0] += dedx; - fhal[i][1] += dedy; - fhal[i][2] += dedz; + f[i][0] += dedx; + f[i][1] += dedy; + f[i][2] += dedz; } else { - fhal[i][0] += dedx*redi; - fhal[i][1] += dedy*redi; - fhal[i][2] += dedz*redi; - fhal[iv][0] += dedx*rediv; - fhal[iv][1] += dedy*rediv; - fhal[iv][2] += dedz*rediv; + f[i][0] += dedx*redi; + f[i][1] += dedy*redi; + f[i][2] += dedz*redi; + f[iv][0] += dedx*rediv; + f[iv][1] += dedy*rediv; + f[iv][2] += dedz*rediv; } if (j == jv) { - fhal[j][0] -= dedx; - fhal[j][1] -= dedy; - fhal[j][2] -= dedz; + f[j][0] -= dedx; + f[j][1] -= dedy; + f[j][2] -= dedz; } else { redj = kred[jclass]; redjv = 1.0 - redj; - fhal[j][0] -= dedx*redj; - fhal[j][1] -= dedy*redj; - fhal[j][2] -= dedz*redj; - fhal[jv][0] -= dedx*redjv; - fhal[jv][1] -= dedy*redjv; - fhal[jv][2] -= dedz*redjv; + f[j][0] -= dedx*redj; + f[j][1] -= dedy*redj; + f[j][2] -= dedz*redj; + f[jv][0] -= dedx*redjv; + f[jv][1] -= dedy*redjv; + f[jv][2] -= dedz*redjv; } // increment the internal virial tensor components diff --git a/src/AMOEBA/amoeba_induce.cpp b/src/AMOEBA/amoeba_induce.cpp index 617eb89fcd..064c8f234c 100644 --- a/src/AMOEBA/amoeba_induce.cpp +++ b/src/AMOEBA/amoeba_induce.cpp @@ -41,6 +41,8 @@ enum{GORDON1,GORDON2}; #define DEBYE 4.80321 // conversion factor from q-Angs (real units) to Debye +#define UIND_DEBUG 0 + /* ---------------------------------------------------------------------- induce = induced dipole moments via pre-conditioned CG solver adapted from Tinker induce0a() routine @@ -586,7 +588,7 @@ void PairAmoeba::induce() // DEBUG output to dump file - if (uind_flag) + if (UIND_DEBUG) dump6(fp_uind,"id uindx uindy uindz uinpx uinpy uinpz",DEBYE,uind,uinp); // deallocation of arrays @@ -762,11 +764,11 @@ void PairAmoeba::ufield0c(double **field, double **fieldp) // get the reciprocal space part of the mutual field - if (kspace_flag) umutual1(field,fieldp); + if (polar_kspace_flag) umutual1(field,fieldp); // get the real space portion of the mutual field - if (rspace_flag) umutual2b(field,fieldp); + if (polar_rspace_flag) umutual2b(field,fieldp); // add the self-energy portion of the mutual field @@ -1030,7 +1032,7 @@ void PairAmoeba::dfield0c(double **field, double **fieldp) // get the reciprocal space part of the permanent field - if (kspace_flag) udirect1(field); + if (polar_kspace_flag) udirect1(field); for (i = 0; i < nlocal; i++) { for (j = 0; j < 3; j++) { @@ -1040,7 +1042,7 @@ void PairAmoeba::dfield0c(double **field, double **fieldp) // get the real space portion of the permanent field - if (rspace_flag) udirect2b(field,fieldp); + if (polar_rspace_flag) udirect2b(field,fieldp); // get the self-energy portion of the permanent field diff --git a/src/AMOEBA/amoeba_multipole.cpp b/src/AMOEBA/amoeba_multipole.cpp index 945ee976eb..4a1660eaed 100644 --- a/src/AMOEBA/amoeba_multipole.cpp +++ b/src/AMOEBA/amoeba_multipole.cpp @@ -85,12 +85,12 @@ void PairAmoeba::multipole() // compute the real space part of the Ewald summation - if (rspace_flag) multipole_real(); + if (mpole_rspace_flag) multipole_real(); // compute the reciprocal space part of the Ewald summation //printf("zero check %e \n",empole); - if (kspace_flag) multipole_kspace(); + if (mpole_kspace_flag) multipole_kspace(); //printf("kspace energy %e \n",empole); // compute the Ewald self-energy term over all the atoms @@ -519,9 +519,9 @@ void PairAmoeba::multipole_real() // increment force-based gradient and torque on first site - fmpole[i][0] += frcx; - fmpole[i][1] += frcy; - fmpole[i][2] += frcz; + f[i][0] += frcx; + f[i][1] += frcy; + f[i][2] += frcz; tq[i][0] += ttmi[0]; tq[i][1] += ttmi[1]; tq[i][2] += ttmi[2]; @@ -529,9 +529,9 @@ void PairAmoeba::multipole_real() // increment force-based gradient and torque on second site // commenting out j parts for DEBUGGING - fmpole[j][0] -= frcx; - fmpole[j][1] -= frcy; - fmpole[j][2] -= frcz; + f[j][0] -= frcx; + f[j][1] -= frcy; + f[j][2] -= frcz; tq[j][0] += ttmk[0]; tq[j][1] += ttmk[1]; tq[j][2] += ttmk[2]; @@ -569,7 +569,7 @@ void PairAmoeba::multipole_real() // resolve site torques then increment forces and virial for (i = 0; i < nlocal; i++) { - torque2force(i,tq[i],fix,fiy,fiz,fmpole); + torque2force(i,tq[i],fix,fiy,fiz,f); iz = zaxis2local[i]; ix = xaxis2local[i]; @@ -648,6 +648,7 @@ void PairAmoeba::multipole_kspace() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; double volbox = domain->prd[0] * domain->prd[1] * domain->prd[2]; @@ -817,12 +818,12 @@ void PairAmoeba::multipole_kspace() h1 = recip[0][0]*f1 + recip[0][1]*f2 + recip[0][2]*f3; // matvec? h2 = recip[1][0]*f1 + recip[1][1]*f2 + recip[1][2]*f3; h3 = recip[2][0]*f1 + recip[2][1]*f2 + recip[2][2]*f3; - fmpole[i][0] += h1; - fmpole[i][1] += h2; - fmpole[i][2] += h3; + f[i][0] += h1; + f[i][1] += h2; + f[i][2] += h3; } empole += 0.5*e; - //printf("mpole_force %g %g %g \n", fmpole[0][0], fmpole[0][1], fmpole[0][2]); + //printf("mpole_force %g %g %g \n", f[0][0], f[0][1], f[0][2]); // augment the permanent multipole virial contributions @@ -860,7 +861,7 @@ void PairAmoeba::multipole_kspace() cmp[i][7]*cphi[i][4] + cmp[i][9]*cphi[i][8] - cmp[i][7]*cphi[i][5] - cmp[i][8]*cphi[i][9]; - torque2force(i,tem,fix,fiy,fiz,fmpole); + torque2force(i,tem,fix,fiy,fiz,f); iz = zaxis2local[i]; ix = xaxis2local[i]; diff --git a/src/AMOEBA/amoeba_polar.cpp b/src/AMOEBA/amoeba_polar.cpp index 4fa8a5d892..1b38d1b608 100644 --- a/src/AMOEBA/amoeba_polar.cpp +++ b/src/AMOEBA/amoeba_polar.cpp @@ -68,6 +68,7 @@ void PairAmoeba::polar() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; // set the energy unit conversion factor @@ -80,11 +81,11 @@ void PairAmoeba::polar() // compute the real space part of the dipole interactions - if (rspace_flag) polar_real(); + if (polar_rspace_flag) polar_real(); // compute the reciprocal space part of dipole interactions - if (kspace_flag) polar_kspace(); + if (polar_kspace_flag) polar_kspace(); // compute the Ewald self-energy torque and virial terms @@ -101,7 +102,7 @@ void PairAmoeba::polar() tep[1] = term * (diz*uix-dix*uiz); tep[2] = term * (dix*uiy-diy*uix); - torque2force(i,tep,fix,fiy,fiz,fpolar); + torque2force(i,tep,fix,fiy,fiz,f); iz = zaxis2local[i]; ix = xaxis2local[i]; @@ -277,6 +278,7 @@ void PairAmoeba::polar_real() pval = atom->dvector[index_pval]; double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; @@ -1138,12 +1140,12 @@ void PairAmoeba::polar_real() // increment force-based gradient on the interaction sites - fpolar[i][0] -= frcx; - fpolar[i][1] -= frcy; - fpolar[i][2] -= frcz; - fpolar[j][0] += frcx; - fpolar[j][1] += frcy; - fpolar[j][2] += frcz; + f[i][0] -= frcx; + f[i][1] -= frcy; + f[i][2] -= frcz; + f[j][0] += frcx; + f[j][1] += frcy; + f[j][2] += frcz; // increment the virial due to pairwise Cartesian forces @@ -1197,10 +1199,8 @@ void PairAmoeba::polar_real() qiyz*dufld[i][3] - qixz*dufld[i][4] + 2.0*qixy*(dufld[i][0]-dufld[i][2]) + (qiyy-qixx)*dufld[i][1]; - torque2force(i,tep,fix,fiy,fiz,fpolar); - - //if (i < 10) printf("i = %d: tep = %f %f %f\n", i, tep[0], tep[1], tep[2]); - + torque2force(i,tep,fix,fiy,fiz,f); + iz = zaxis2local[i]; ix = xaxis2local[i]; iy = yaxis2local[i]; @@ -1282,6 +1282,7 @@ void PairAmoeba::polar_kspace() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; double volbox = domain->prd[0] * domain->prd[1] * domain->prd[2]; @@ -1517,9 +1518,9 @@ void PairAmoeba::polar_kspace() h1 = recip[0][0]*f1 + recip[0][1]*f2 + recip[0][2]*f3; h2 = recip[1][0]*f1 + recip[1][1]*f2 + recip[1][2]*f3; h3 = recip[2][0]*f1 + recip[2][1]*f2 + recip[2][2]*f3; - fpolar[i][0] += h1; - fpolar[i][1] += h2; - fpolar[i][2] += h3; + f[i][0] += h1; + f[i][1] += h2; + f[i][2] += h3; } // set the potential to be the induced dipole average @@ -1606,7 +1607,7 @@ void PairAmoeba::polar_kspace() 2.0*(cmp[i][5]-cmp[i][4])*cphidp[i][7] + cmp[i][7]*cphidp[i][4] + cmp[i][9]*cphidp[i][8] - cmp[i][7]*cphidp[i][5] - cmp[i][8]*cphidp[i][9]; - torque2force(i,tep,fix,fiy,fiz,fpolar); + torque2force(i,tep,fix,fiy,fiz,f); iz = zaxis2local[i]; ix = xaxis2local[i]; @@ -1671,9 +1672,9 @@ void PairAmoeba::polar_kspace() h2 = recip[1][0]*f1 + recip[1][1]*f2 + recip[1][2]*f3; h3 = recip[2][0]*f1 + recip[2][1]*f2 + recip[2][2]*f3; - fpolar[i][0] += copm[k+m+1]*h1; - fpolar[i][1] += copm[k+m+1]*h2; - fpolar[i][2] += copm[k+m+1]*h3; + f[i][0] += copm[k+m+1]*h1; + f[i][1] += copm[k+m+1]*h2; + f[i][2] += copm[k+m+1]*h3; for (j = 1; j < 4; j++) { cphid[j] = 0.0; @@ -1761,9 +1762,9 @@ void PairAmoeba::polar_kspace() h1 = recip[0][0]*f1 + recip[0][1]*f2 + recip[0][2]*f3; h2 = recip[1][0]*f1 + recip[1][1]*f2 + recip[1][2]*f3; h3 = recip[2][0]*f1 + recip[2][1]*f2 + recip[2][2]*f3; - fpolar[i][0] += h1; - fpolar[i][1] += h2; - fpolar[i][2] += h3; + f[i][0] += h1; + f[i][1] += h2; + f[i][2] += h3; for (j = 1; j < 4; j++) { cphid[j] = 0.0; @@ -1837,9 +1838,9 @@ void PairAmoeba::polar_kspace() h1 = recip[0][0]*f1 + recip[0][1]*f2 + recip[0][2]*f3; // matvec h2 = recip[1][0]*f1 + recip[1][1]*f2 + recip[1][2]*f3; h3 = recip[2][0]*f1 + recip[2][1]*f2 + recip[2][2]*f3; - fpolar[i][0] += h1; - fpolar[i][1] += h2; - fpolar[i][2] += h3; + f[i][0] += h1; + f[i][1] += h2; + f[i][2] += h3; for (j = 1; j < 4; j++) { cphid[j] = 0.0; diff --git a/src/AMOEBA/amoeba_repulsion.cpp b/src/AMOEBA/amoeba_repulsion.cpp index 11c4f821c2..2823a82de2 100644 --- a/src/AMOEBA/amoeba_repulsion.cpp +++ b/src/AMOEBA/amoeba_repulsion.cpp @@ -91,6 +91,7 @@ void PairAmoeba::repulsion() // owned atoms double **x = atom->x; + double **f = atom->f; int nlocal = atom->nlocal; // zero repulsion torque on owned + ghost atoms @@ -337,18 +338,18 @@ void PairAmoeba::repulsion() // increment force-based gradient and torque on atom I - frepulse[i][0] += frcx; - frepulse[i][1] += frcy; - frepulse[i][2] += frcz; + f[i][0] += frcx; + f[i][1] += frcy; + f[i][2] += frcz; tq[i][0] += ttri[0]; tq[i][1] += ttri[1]; tq[i][2] += ttri[2]; // increment force-based gradient and torque on atom J - frepulse[j][0] -= frcx; - frepulse[j][1] -= frcy; - frepulse[j][2] -= frcz; + f[j][0] -= frcx; + f[j][1] -= frcy; + f[j][2] -= frcz; tq[j][0] += ttrk[0]; tq[j][1] += ttrk[1]; tq[j][2] += ttrk[2]; @@ -389,7 +390,7 @@ void PairAmoeba::repulsion() // resolve site torques then increment forces and virial for (i = 0; i < nlocal; i++) { - torque2force(i,tq[i],fix,fiy,fiz,frepulse); + torque2force(i,tq[i],fix,fiy,fiz,f); iz = zaxis2local[i]; ix = xaxis2local[i]; diff --git a/src/AMOEBA/angle_amoeba.cpp b/src/AMOEBA/angle_amoeba.cpp index 4476615a50..216a79ff83 100644 --- a/src/AMOEBA/angle_amoeba.cpp +++ b/src/AMOEBA/angle_amoeba.cpp @@ -21,6 +21,7 @@ #include "domain.h" #include "comm.h" #include "force.h" +#include "pair.h" #include "math_const.h" #include "memory.h" #include "error.h" @@ -35,12 +36,22 @@ using namespace MathConst; AngleAmoeba::AngleAmoeba(LAMMPS *lmp) : Angle(lmp) { pflag = nullptr; + ubflag = nullptr; + theta0 = nullptr; k2 = nullptr; k3 = nullptr; k4 = nullptr; k5 = nullptr; k6 = nullptr; + + ba_k1 = nullptr; + ba_k2 = nullptr; + ba_r1 = nullptr; + ba_r2 = nullptr; + + ub_k = nullptr; + ub_r0 = nullptr; } /* ---------------------------------------------------------------------- */ @@ -51,14 +62,27 @@ AngleAmoeba::~AngleAmoeba() if (allocated) { memory->destroy(setflag); + memory->destroy(setflag_a); + memory->destroy(setflag_ba); + memory->destroy(setflag_ub); memory->destroy(pflag); + memory->destroy(ubflag); + memory->destroy(theta0); memory->destroy(k2); memory->destroy(k3); memory->destroy(k4); memory->destroy(k5); memory->destroy(k6); + + memory->destroy(ba_k1); + memory->destroy(ba_k2); + memory->destroy(ba_r1); + memory->destroy(ba_r2); + + memory->destroy(ub_k); + memory->destroy(ub_r0); } } @@ -66,22 +90,19 @@ AngleAmoeba::~AngleAmoeba() void AngleAmoeba::compute(int eflag, int vflag) { - int i1,i2,i3,n,type,tflag; + int i1,i2,i3,n,type,tflag,uflag; double delx1,dely1,delz1,delx2,dely2,delz2; - double eangle,f1[3],f3[3]; + double f1[3],f3[3]; double dtheta,dtheta2,dtheta3,dtheta4,dtheta5,dtheta6,de_angle; double dr1,dr2,tk1,tk2,aa1,aa2,aa11,aa12,aa21,aa22; double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22,b1,b2; + double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; - eangle = 0.0; - ev_init(eflag,vflag); - - double **x = atom->x; - double **f = atom->f; int **anglelist = neighbor->anglelist; + int **nspecial = atom->nspecial; int nanglelist = neighbor->nanglelist; - int nlocal = atom->nlocal; - int newton_bond = force->newton_bond; + + ev_init(eflag,vflag); for (n = 0; n < nanglelist; n++) { i1 = anglelist[n][0]; @@ -90,101 +111,133 @@ void AngleAmoeba::compute(int eflag, int vflag) type = anglelist[n][3]; // tflag = 0 for "angle", 1 for "anglep" in Tinker PRM file - // atom 2 must have 3 bond partners to invoke "anglep" option + // atom 2 must have exactly 3 bond partners to invoke anglep() variant - tflag = pflag[type]; + if (enable_angle) { + tflag = pflag[type]; - if (tflag && atom->num_bond[i2] == 3) { - anglep(i1,i2,i3,type,eflag); - continue; + if (tflag && nspecial[i2][0] == 3) + tinker_anglep(i1,i2,i3,type,eflag); + else + tinker_angle(i1,i2,i3,type,eflag); + + // bondangle = bond-stretch cross term in Tinker + + if (ba_k1[type] != 0.0) + tinker_bondangle(i1,i2,i3,type,eflag); } - // 1st bond + // Urey-Bradley H-H bond term within water molecules - delx1 = x[i1][0] - x[i2][0]; - dely1 = x[i1][1] - x[i2][1]; - delz1 = x[i1][2] - x[i2][2]; - - rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; - r1 = sqrt(rsq1); - - // 2nd bond - - delx2 = x[i3][0] - x[i2][0]; - dely2 = x[i3][1] - x[i2][1]; - delz2 = x[i3][2] - x[i2][2]; - - rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; - r2 = sqrt(rsq2); - - // angle (cos and sin) - - c = delx1*delx2 + dely1*dely2 + delz1*delz2; - c /= r1*r2; - - if (c > 1.0) c = 1.0; - if (c < -1.0) c = -1.0; - - s = sqrt(1.0 - c*c); - if (s < SMALL) s = SMALL; - s = 1.0/s; - - // force & energy for angle term - - dtheta = acos(c) - theta0[type]; - dtheta2 = dtheta*dtheta; - dtheta3 = dtheta2*dtheta; - dtheta4 = dtheta3*dtheta; - dtheta5 = dtheta4*dtheta; - dtheta6 = dtheta5*dtheta; - - de_angle = 2.0*k2[type]*dtheta + 3.0*k3[type]*dtheta2 + - 4.0*k4[type]*dtheta3 + 5.0*k5[type]*dtheta4 + 6.0*k6[type]*dtheta5; - - a = -de_angle*s; - a11 = a*c / rsq1; - a12 = -a / (r1*r2); - a22 = a*c / rsq2; - - f1[0] = a11*delx1 + a12*delx2; - f1[1] = a11*dely1 + a12*dely2; - f1[2] = a11*delz1 + a12*delz2; - - f3[0] = a22*delx2 + a12*delx1; - f3[1] = a22*dely2 + a12*dely1; - f3[2] = a22*delz2 + a12*delz1; - - if (eflag) eangle = k2[type]*dtheta2 + k3[type]*dtheta3 + - k4[type]*dtheta4 + k5[type]*dtheta5 + k6[type]*dtheta6; - - // apply force to each of 3 atoms - - if (newton_bond || i1 < nlocal) { - f[i1][0] += f1[0]; - f[i1][1] += f1[1]; - f[i1][2] += f1[2]; + if (enable_urey) { + uflag = ubflag[type]; + if (uflag) tinker_urey_bradley(i1,i3,type,eflag); } - - if (newton_bond || i2 < nlocal) { - f[i2][0] -= f1[0] + f3[0]; - f[i2][1] -= f1[1] + f3[1]; - f[i2][2] -= f1[2] + f3[2]; - } - - if (newton_bond || i3 < nlocal) { - f[i3][0] += f3[0]; - f[i3][1] += f3[1]; - f[i3][2] += f3[2]; - } - - if (evflag) ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3, - delx1,dely1,delz1,delx2,dely2,delz2); } } /* ---------------------------------------------------------------------- */ -void AngleAmoeba::anglep(int i1, int i2, int i3, int type, int eflag) +void AngleAmoeba::tinker_angle(int i1, int i2, int i3, int type, int eflag) +{ + double delx1,dely1,delz1,delx2,dely2,delz2; + double eangle,f1[3],f3[3]; + double dtheta,dtheta2,dtheta3,dtheta4,dtheta5,dtheta6,de_angle; + double dr1,dr2,tk1,tk2,aa1,aa2,aa11,aa12,aa21,aa22; + double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22,b1,b2; + double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + // 1st bond + + delx1 = x[i1][0] - x[i2][0]; + dely1 = x[i1][1] - x[i2][1]; + delz1 = x[i1][2] - x[i2][2]; + + rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; + r1 = sqrt(rsq1); + + // 2nd bond + + delx2 = x[i3][0] - x[i2][0]; + dely2 = x[i3][1] - x[i2][1]; + delz2 = x[i3][2] - x[i2][2]; + + rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + // force & energy for angle term + + dtheta = acos(c) - theta0[type]; + dtheta2 = dtheta*dtheta; + dtheta3 = dtheta2*dtheta; + dtheta4 = dtheta3*dtheta; + dtheta5 = dtheta4*dtheta; + dtheta6 = dtheta5*dtheta; + + de_angle = 2.0*k2[type]*dtheta + 3.0*k3[type]*dtheta2 + + 4.0*k4[type]*dtheta3 + 5.0*k5[type]*dtheta4 + 6.0*k6[type]*dtheta5; + + a = -de_angle*s; + a11 = a*c / rsq1; + a12 = -a / (r1*r2); + a22 = a*c / rsq2; + + f1[0] = a11*delx1 + a12*delx2; + f1[1] = a11*dely1 + a12*dely2; + f1[2] = a11*delz1 + a12*delz2; + + f3[0] = a22*delx2 + a12*delx1; + f3[1] = a22*dely2 + a12*dely1; + f3[2] = a22*delz2 + a12*delz1; + + eangle = 0.0; + if (eflag) eangle = k2[type]*dtheta2 + k3[type]*dtheta3 + + k4[type]*dtheta4 + k5[type]*dtheta5 + k6[type]*dtheta6; + + // apply force to each of 3 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= f1[0] + f3[0]; + f[i2][1] -= f1[1] + f3[1]; + f[i2][2] -= f1[2] + f3[2]; + } + + if (newton_bond || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (evflag) ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3, + delx1,dely1,delz1,delx2,dely2,delz2); +} + +/* ---------------------------------------------------------------------- */ + +void AngleAmoeba::tinker_anglep(int i1, int i2, int i3, int type, int eflag) { int i4; tagint i1tag,i3tag,i4tag; @@ -203,7 +256,7 @@ void AngleAmoeba::anglep(int i1, int i2, int i3, int type, int eflag) double **x = atom->x; double **f = atom->f; - tagint **bond_atom = atom->bond_atom; + tagint **special = atom->special; int nlocal = atom->nlocal; int newton_bond = force->newton_bond; @@ -213,7 +266,7 @@ void AngleAmoeba::anglep(int i1, int i2, int i3, int type, int eflag) i3tag = atom->tag[i3]; for (int ibond = 0; ibond < 3; ibond++) { - i4tag = bond_atom[i2][ibond]; + i4tag = special[i2][ibond]; if (i4tag != i1tag && i4tag != i3tag) break; } @@ -287,18 +340,10 @@ void AngleAmoeba::anglep(int i1, int i2, int i3, int type, int eflag) deddt = 2.0*k2[type]*dtheta + 3.0*k3[type]*dtheta2 + 4.0*k4[type]*dtheta3 + 5.0*k5[type]*dtheta4 + 6.0*k6[type]*dtheta5; + eangle = 0.0; if (eflag) eangle = k2[type]*dtheta2 + k3[type]*dtheta3 + k4[type]*dtheta4 + k5[type]*dtheta5 + k6[type]*dtheta6; - /* - printf("ANGLEP: %d %d %d %d: eng %g\n", - atom->tag[i1], - atom->tag[i2], - atom->tag[i3], - atom->tag[i4], - eangle); - */ - // chain rule terms for first derivative components terma = -deddt / (rap2*rm); @@ -376,12 +421,175 @@ void AngleAmoeba::anglep(int i1, int i2, int i3, int type, int eflag) /* ---------------------------------------------------------------------- */ +void AngleAmoeba::tinker_bondangle(int i1, int i2, int i3, int type, int eflag) +{ + double delx1,dely1,delz1,delx2,dely2,delz2; + double rsq1,r1,rsq2,r2,c,s,dtheta; + double dr1,dr2,aa1,aa2,b1,b2; + double aa11,aa12,aa21,aa22; + double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; + double eangle,f1[3],f3[3]; + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + // 1st bond + + delx1 = x[i1][0] - x[i2][0]; + dely1 = x[i1][1] - x[i2][1]; + delz1 = x[i1][2] - x[i2][2]; + + rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; + r1 = sqrt(rsq1); + + // 2nd bond + + delx2 = x[i3][0] - x[i2][0]; + dely2 = x[i3][1] - x[i2][1]; + delz2 = x[i3][2] - x[i2][2]; + + rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; + r2 = sqrt(rsq2); + + // angle (cos and sin) + + c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + + s = sqrt(1.0 - c*c); + if (s < SMALL) s = SMALL; + s = 1.0/s; + + dtheta = acos(c) - theta0[type]; + + // force & energy for bond-angle term + + dr1 = r1 - ba_r1[type]; + dr2 = r2 - ba_r2[type]; + + aa1 = s * dr1 * ba_k1[type]; + aa2 = s * dr2 * ba_k2[type]; + + aa11 = aa1 * c / rsq1; + aa12 = -aa1 / (r1 * r2); + aa21 = aa2 * c / rsq1; + aa22 = -aa2 / (r1 * r2); + + vx11 = (aa11 * delx1) + (aa12 * delx2); + vx12 = (aa21 * delx1) + (aa22 * delx2); + vy11 = (aa11 * dely1) + (aa12 * dely2); + vy12 = (aa21 * dely1) + (aa22 * dely2); + vz11 = (aa11 * delz1) + (aa12 * delz2); + vz12 = (aa21 * delz1) + (aa22 * delz2); + + aa11 = aa1 * c / rsq2; + aa21 = aa2 * c / rsq2; + + vx21 = (aa11 * delx2) + (aa12 * delx1); + vx22 = (aa21 * delx2) + (aa22 * delx1); + vy21 = (aa11 * dely2) + (aa12 * dely1); + vy22 = (aa21 * dely2) + (aa22 * dely1); + vz21 = (aa11 * delz2) + (aa12 * delz1); + vz22 = (aa21 * delz2) + (aa22 * delz1); + + b1 = ba_k1[type] * dtheta / r1; + b2 = ba_k2[type] * dtheta / r2; + + f1[0] -= vx11 + b1*delx1 + vx12; + f1[1] -= vy11 + b1*dely1 + vy12; + f1[2] -= vz11 + b1*delz1 + vz12; + + f3[0] -= vx21 + b2*delx2 + vx22; + f3[1] -= vy21 + b2*dely2 + vy22; + f3[2] -= vz21 + b2*delz2 + vz22; + + eangle = 0.0; + if (eflag) eangle = ba_k1[type]*dr1*dtheta + ba_k2[type]*dr2*dtheta; + + // apply force to each of 3 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += f1[0]; + f[i1][1] += f1[1]; + f[i1][2] += f1[2]; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= f1[0] + f3[0]; + f[i2][1] -= f1[1] + f3[1]; + f[i2][2] -= f1[2] + f3[2]; + } + + if (newton_bond || i3 < nlocal) { + f[i3][0] += f3[0]; + f[i3][1] += f3[1]; + f[i3][2] += f3[2]; + } + + if (evflag) ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3, + delx1,dely1,delz1,delx2,dely2,delz2); +} + +/* ---------------------------------------------------------------------- */ + +void AngleAmoeba::tinker_urey_bradley(int i1, int i2, int type, int eflag) +{ + double delx,dely,delz; + double rsq,r,dr,rk; + double fbond,ebond; + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + delx = x[i1][0] - x[i2][0]; + dely = x[i1][1] - x[i2][1]; + delz = x[i1][2] - x[i2][2]; + + rsq = delx*delx + dely*dely + delz*delz; + r = sqrt(rsq); + dr = r - ub_r0[type]; + rk = ub_k[type] * dr; + + // force & energy + + if (r > 0.0) fbond = -2.0*rk/r; + else fbond = 0.0; + + if (eflag) ebond = rk*dr; + + // apply force to each of 2 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += delx*fbond; + f[i1][1] += dely*fbond; + f[i1][2] += delz*fbond; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= delx*fbond; + f[i2][1] -= dely*fbond; + f[i2][2] -= delz*fbond; + } + + if (evflag) ev_tally2(i1,i2,nlocal,newton_bond,ebond,fbond,delx,dely,delz); +} + +/* ---------------------------------------------------------------------- */ + void AngleAmoeba::allocate() { allocated = 1; int n = atom->nangletypes; memory->create(pflag,n+1,"angle:pflag"); + memory->create(ubflag,n+1,"angle:ubflag"); memory->create(theta0,n+1,"angle:theta0"); memory->create(k2,n+1,"angle:k2"); memory->create(k3,n+1,"angle:k3"); @@ -389,8 +597,21 @@ void AngleAmoeba::allocate() memory->create(k5,n+1,"angle:k5"); memory->create(k6,n+1,"angle:k6"); + memory->create(ba_k1,n+1,"angle:ba_k1"); + memory->create(ba_k2,n+1,"angle:ba_k2"); + memory->create(ba_r1,n+1,"angle:ba_r1"); + memory->create(ba_r2,n+1,"angle:ba_r2"); + + memory->create(ub_k,n+1,"angle:ub_k"); + memory->create(ub_r0,n+1,"angle:ub_r0"); + memory->create(setflag,n+1,"angle:setflag"); - for (int i = 1; i <= n; i++) setflag[i] = 0; + memory->create(setflag_a,n+1,"angle:setflag_a"); + memory->create(setflag_ba,n+1,"angle:setflag_ba"); + memory->create(setflag_ub,n+1,"angle:setflag_ub"); + + for (int i = 1; i <= n; i++) + setflag[i] = setflag_a[i] = setflag_ba[i] = setflag_ub[i] = 0; } /* ---------------------------------------------------------------------- @@ -399,6 +620,7 @@ void AngleAmoeba::allocate() void AngleAmoeba::coeff(int narg, char **arg) { + if (narg < 2) error->all(FLERR,"Incorrect args for angle coefficients"); if (!allocated) allocate(); int ilo,ihi; @@ -406,32 +628,85 @@ void AngleAmoeba::coeff(int narg, char **arg) int count = 0; - if (narg != 8) error->all(FLERR,"Incorrect args for angle coefficients"); + if (strcmp(arg[1],"ba") == 0) { + if (narg != 6) error->all(FLERR,"Incorrect args for angle coefficients"); - int pflag_one = utils::inumeric(FLERR,arg[1],false,lmp); - double theta0_one = utils::numeric(FLERR,arg[2],false,lmp); - double k2_one = utils::numeric(FLERR,arg[3],false,lmp); - double k3_one = utils::numeric(FLERR,arg[4],false,lmp); - double k4_one = utils::numeric(FLERR,arg[5],false,lmp); - double k5_one = utils::numeric(FLERR,arg[6],false,lmp); - double k6_one = utils::numeric(FLERR,arg[7],false,lmp); + double ba_k1_one = utils::numeric(FLERR,arg[2],false,lmp); + double ba_k2_one = utils::numeric(FLERR,arg[3],false,lmp); + double ba_r1_one = utils::numeric(FLERR,arg[4],false,lmp); + double ba_r2_one = utils::numeric(FLERR,arg[5],false,lmp); - // convert theta0 from degrees to radians + for (int i = ilo; i <= ihi; i++) { + ba_k1[i] = ba_k1_one; + ba_k2[i] = ba_k2_one; + ba_r1[i] = ba_r1_one; + ba_r2[i] = ba_r2_one; + setflag_ba[i] = 1; + count++; + } + + } else if (strcmp(arg[1],"ub") == 0) { + if (narg != 4) error->all(FLERR,"Incorrect args for angle coefficients"); + + double ub_k_one = utils::numeric(FLERR,arg[2],false,lmp); + double ub_r0_one = utils::numeric(FLERR,arg[3],false,lmp); + + for (int i = ilo; i <= ihi; i++) { + ub_k[i] = ub_k_one; + ub_r0[i] = ub_r0_one; + setflag_ub[i] = 1; + count++; + } + + } else { + if (narg != 9) error->all(FLERR,"Incorrect args for angle coefficients"); + + int pflag_one = utils::inumeric(FLERR,arg[1],false,lmp); + int ubflag_one = utils::inumeric(FLERR,arg[2],false,lmp); + double theta0_one = utils::numeric(FLERR,arg[3],false,lmp); + double k2_one = utils::numeric(FLERR,arg[4],false,lmp); + double k3_one = utils::numeric(FLERR,arg[5],false,lmp); + double k4_one = utils::numeric(FLERR,arg[6],false,lmp); + double k5_one = utils::numeric(FLERR,arg[7],false,lmp); + double k6_one = utils::numeric(FLERR,arg[8],false,lmp); + + // convert theta0 from degrees to radians - for (int i = ilo; i <= ihi; i++) { - pflag[i] = pflag_one; - theta0[i] = theta0_one/180.0 * MY_PI; - k2[i] = k2_one; - k3[i] = k3_one; - k4[i] = k4_one; - k5[i] = k5_one; - k6[i] = k6_one; - count++; + for (int i = ilo; i <= ihi; i++) { + pflag[i] = pflag_one; + ubflag[i] = ubflag_one; + theta0[i] = theta0_one/180.0 * MY_PI; + k2[i] = k2_one; + k3[i] = k3_one; + k4[i] = k4_one; + k5[i] = k5_one; + k6[i] = k6_one; + setflag_a[i] = 1; + count++; + } } if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients"); - for (int i = ilo; i <= ihi; i++) setflag[i] = 1; + for (int i = ilo; i <= ihi; i++) + if (setflag_a[i] == 1 && setflag_ba[i] == 1 && setflag_ub[i]) + setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- */ + +void AngleAmoeba::init_style() +{ + // check if PairAmoeba disabled angle or Urey-Bradley terms + + Pair *pair = force->pair_match("amoeba",1,0); + + if (!pair) enable_angle = enable_urey = 1; + else { + int tmp; + enable_angle = *((int *) pair->extract("angle_flag",tmp)); + enable_urey = *((int *) pair->extract("urey_flag",tmp)); + } } /* ---------------------------------------------------------------------- */ @@ -448,12 +723,22 @@ double AngleAmoeba::equilibrium_angle(int i) void AngleAmoeba::write_restart(FILE *fp) { fwrite(&pflag[1],sizeof(int),atom->nangletypes,fp); + fwrite(&ubflag[1],sizeof(int),atom->nangletypes,fp); + fwrite(&theta0[1],sizeof(double),atom->nangletypes,fp); fwrite(&k2[1],sizeof(double),atom->nangletypes,fp); fwrite(&k3[1],sizeof(double),atom->nangletypes,fp); fwrite(&k4[1],sizeof(double),atom->nangletypes,fp); fwrite(&k5[1],sizeof(double),atom->nangletypes,fp); fwrite(&k6[1],sizeof(double),atom->nangletypes,fp); + + fwrite(&ba_k1[1],sizeof(double),atom->nangletypes,fp); + fwrite(&ba_k2[1],sizeof(double),atom->nangletypes,fp); + fwrite(&ba_r1[1],sizeof(double),atom->nangletypes,fp); + fwrite(&ba_r2[1],sizeof(double),atom->nangletypes,fp); + + fwrite(&ub_k[1],sizeof(double),atom->nangletypes,fp); + fwrite(&ub_r0[1],sizeof(double),atom->nangletypes,fp); } /* ---------------------------------------------------------------------- @@ -466,15 +751,34 @@ void AngleAmoeba::read_restart(FILE *fp) if (comm->me == 0) { utils::sfread(FLERR,&pflag[1],sizeof(int),atom->nangletypes,fp,nullptr,error); - utils::sfread(FLERR,&theta0[1],sizeof(double),atom->nangletypes,fp,nullptr,error); + utils::sfread(FLERR,&ubflag[1],sizeof(int),atom->nangletypes, + fp,nullptr,error); + + utils::sfread(FLERR,&theta0[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); utils::sfread(FLERR,&k2[1],sizeof(double),atom->nangletypes,fp,nullptr,error); utils::sfread(FLERR,&k3[1],sizeof(double),atom->nangletypes,fp,nullptr,error); utils::sfread(FLERR,&k4[1],sizeof(double),atom->nangletypes,fp,nullptr,error); utils::sfread(FLERR,&k5[1],sizeof(double),atom->nangletypes,fp,nullptr,error); utils::sfread(FLERR,&k6[1],sizeof(double),atom->nangletypes,fp,nullptr,error); + + utils::sfread(FLERR,&ba_k1[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); + utils::sfread(FLERR,&ba_k2[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); + utils::sfread(FLERR,&ba_r1[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); + utils::sfread(FLERR,&ba_r2[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); + + utils::sfread(FLERR,&ub_k[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); + utils::sfread(FLERR,&ub_r0[1],sizeof(double),atom->nangletypes, + fp,nullptr,error); } MPI_Bcast(&pflag[1],atom->nangletypes,MPI_INT,0,world); + MPI_Bcast(&ubflag[1],atom->nangletypes,MPI_INT,0,world); MPI_Bcast(&theta0[1],atom->nangletypes,MPI_DOUBLE,0,world); MPI_Bcast(&k2[1],atom->nangletypes,MPI_DOUBLE,0,world); MPI_Bcast(&k3[1],atom->nangletypes,MPI_DOUBLE,0,world); @@ -482,6 +786,14 @@ void AngleAmoeba::read_restart(FILE *fp) MPI_Bcast(&k5[1],atom->nangletypes,MPI_DOUBLE,0,world); MPI_Bcast(&k6[1],atom->nangletypes,MPI_DOUBLE,0,world); + MPI_Bcast(&ba_k1[1],atom->nangletypes,MPI_DOUBLE,0,world); + MPI_Bcast(&ba_k2[1],atom->nangletypes,MPI_DOUBLE,0,world); + MPI_Bcast(&ba_r1[1],atom->nangletypes,MPI_DOUBLE,0,world); + MPI_Bcast(&ba_r2[1],atom->nangletypes,MPI_DOUBLE,0,world); + + MPI_Bcast(&ub_k[1],atom->nangletypes,MPI_DOUBLE,0,world); + MPI_Bcast(&ub_r0[1],atom->nangletypes,MPI_DOUBLE,0,world); + for (int i = 1; i <= atom->nangletypes; i++) setflag[i] = 1; } @@ -492,8 +804,17 @@ void AngleAmoeba::read_restart(FILE *fp) void AngleAmoeba::write_data(FILE *fp) { for (int i = 1; i <= atom->nangletypes; i++) - fprintf(fp,"%d %d %g %g %g %g %g %g\n", - i,pflag[i],theta0[i]/MY_PI*180.0,k2[i],k3[i],k4[i],k5[i],k6[i]); + fprintf(fp,"%d %d %d %g %g %g %g %g %g\n", + i,pflag[i],ubflag[i],theta0[i]/MY_PI*180.0, + k2[i],k3[i],k4[i],k5[i],k6[i]); + + fprintf(fp,"\nBondAngle Coeffs\n\n"); + for (int i = 1; i <= atom->nangletypes; i++) + fprintf(fp,"%d %g %g %g %g\n",i,ba_k1[i],ba_k2[i],ba_r1[i],ba_r2[i]); + + fprintf(fp,"\nUreyBradley Coeffs\n\n"); + for (int i = 1; i <= atom->nangletypes; i++) + fprintf(fp,"%d %g %g\n",i,ub_k[i],ub_r0[i]); } /* ---------------------------------------------------------------------- */ @@ -533,5 +854,11 @@ double AngleAmoeba::single(int type, int i1, int i2, int i3) double energy = k2[type]*dtheta2 + k3[type]*dtheta3 + k4[type]*dtheta4 + k5[type]*dtheta5 + k6[type]*dtheta6; + double dr1 = r1 - ba_r1[type]; + double dr2 = r2 - ba_r2[type]; + energy += ba_k1[type]*dr1*dtheta + ba_k2[type]*dr2*dtheta; + + // NOTE: add UB term + return energy; } diff --git a/src/AMOEBA/angle_amoeba.h b/src/AMOEBA/angle_amoeba.h index 66a0c2c6b7..05d8041286 100644 --- a/src/AMOEBA/angle_amoeba.h +++ b/src/AMOEBA/angle_amoeba.h @@ -30,6 +30,7 @@ class AngleAmoeba : public Angle { virtual ~AngleAmoeba(); void compute(int, int); void coeff(int, char **); + void init_style(); double equilibrium_angle(int); void write_restart(FILE *); void read_restart(FILE *); @@ -37,10 +38,18 @@ class AngleAmoeba : public Angle { double single(int, int, int, int); protected: - int *pflag; + int *pflag, *ubflag; double *theta0, *k2, *k3, *k4, *k5, *k6; + double *ba_k1, *ba_k2, *ba_r1, *ba_r2; + double *ub_k, *ub_r0; + int *setflag_a, *setflag_ba, *setflag_ub; - void anglep(int, int, int, int, int); + int enable_angle,enable_urey; + + void tinker_angle(int, int, int, int, int); + void tinker_anglep(int, int, int, int, int); + void tinker_bondangle(int, int, int, int, int); + void tinker_urey_bradley(int, int, int, int); void allocate(); }; diff --git a/src/AMOEBA/fix_amoeba_bitorsion.cpp b/src/AMOEBA/fix_amoeba_bitorsion.cpp new file mode 100644 index 0000000000..e9ff52a0b7 --- /dev/null +++ b/src/AMOEBA/fix_amoeba_bitorsion.cpp @@ -0,0 +1,1181 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_amoeba_bitorsion.h" + +#include + +#include +#include "atom.h" +#include "update.h" +#include "respa.h" +#include "domain.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +#define BITORSIONMAX 6 // max # of BiTorsion terms stored by one atom +#define LISTDELTA 10000 +#define LB_FACTOR 1.5 +#define MAXLINE 1024 + +// NOTE: extra until figure things out + +int tnx(int k) { + return 0; +} +int tny(int k) { + return 0; +} +int ttx(int i, int j) { + return 0; +} +int tty(int i, int j) { + return 0; +} +int ttxy(int i,int j) { + return 0; +} +double tbf(int i,int j) { + return 0.0; +} +double tbx(int i,int j) { + return 0.0; +} +double tby(int i,int j) { + return 0.0; +} +double tbxy(int i,int j) { + return 0.0; +} + +void chkttor(int ib, int ic, int id, int sign, double value1, double value2) { +} + +void bcuint1(double *ftt, double *ft1, double *ft2, double *ft12, + double x1l, double x1u, double y1l, double y1u, + double value1, double value2, + double e, double dedang1, double dedang2) { +} + +/* ---------------------------------------------------------------------- */ + +FixAmoebaBiTorsion::FixAmoebaBiTorsion(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + bitorsion_list(nullptr), num_bitorsion(nullptr), bitorsion_type(nullptr), + bitorsion_atom1(nullptr), bitorsion_atom2(nullptr), bitorsion_atom3(nullptr), + bitorsion_atom4(nullptr), bitorsion_atom5(nullptr) +{ + if (narg != 4) error->all(FLERR,"Illegal fix amoeba/bitorsion command"); + + restart_global = 1; + restart_peratom = 1; + energy_global_flag = energy_peratom_flag = 1; + virial_global_flag = virial_peratom_flag = 1; + thermo_energy = thermo_virial = 1; + centroidstressflag = CENTROID_NOTAVAIL; + peratom_freq = 1; + scalar_flag = 1; + global_freq = 1; + extscalar = 1; + extvector = 1; + wd_header = 1; + wd_section = 1; + respa_level_support = 1; + ilevel_respa = 0; + + MPI_Comm_rank(world,&me); + MPI_Comm_size(world,&nprocs); + + // read and setup BiTorsion grid data + + read_grid_data(arg[3]); + + // perform initial allocation of atom-based arrays + + num_bitorsion = nullptr; + bitorsion_type = nullptr; + bitorsion_atom1 = nullptr; + bitorsion_atom2 = nullptr; + bitorsion_atom3 = nullptr; + bitorsion_atom4 = nullptr; + bitorsion_atom5 = nullptr; + + // register with Atom class + + nmax_previous = 0; + grow_arrays(atom->nmax); + atom->add_callback(Atom::GROW); + atom->add_callback(Atom::RESTART); + + // list of all bitorsions to compute on this proc + + nbitorsion_list = 0; + max_bitorsion_list = 0; + bitorsion_list = nullptr; + + // zero thermo energy + + ebitorsion = 0.0; +} + +/* --------------------------------------------------------------------- */ + +FixAmoebaBiTorsion::~FixAmoebaBiTorsion() +{ + // unregister callbacks to this fix from Atom class + + atom->delete_callback(id,Atom::GROW); + atom->delete_callback(id,Atom::RESTART); + + // per-atom data + + memory->destroy(num_bitorsion); + memory->destroy(bitorsion_type); + memory->destroy(bitorsion_atom1); + memory->destroy(bitorsion_atom2); + memory->destroy(bitorsion_atom3); + memory->destroy(bitorsion_atom4); + memory->destroy(bitorsion_atom5); + + // local list of bitorsions to compute + + memory->destroy(bitorsion_list); + + // BiTorsion grid data + + delete [] nxgrid; + delete [] nygrid; + for (int itype = 1; itype <= ntypes; itype++) + memory->destroy(btgrid[itype]); + delete [] btgrid; +} + +/* ---------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::setmask() +{ + int mask = 0; + mask |= PRE_NEIGHBOR; + mask |= PRE_REVERSE; + mask |= POST_FORCE; + mask |= POST_FORCE_RESPA; + mask |= MIN_POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::init() +{ + if (utils::strmatch(update->integrate_style,"^respa")) { + ilevel_respa = ((Respa *) update->integrate)->nlevels-1; + if (respa_level >= 0) ilevel_respa = MIN(respa_level,ilevel_respa); + } + + // check if PairAmoeba disabled bitorsion terms + + Pair *pair = force->pair_match("amoeba",1,0); + + if (!pair) disable = 0; + else { + int tmp; + int flag = *((int *) pair->extract("bitorsion_flag",tmp)); + disable = flag ? 0 : 1; + } + + // constant + + onefifth = 0.2; +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::setup(int vflag) +{ + pre_neighbor(); + + if (utils::strmatch(update->integrate_style,"^verlet")) + post_force(vflag); + else { + ((Respa *) update->integrate)->copy_flevel_f(ilevel_respa); + post_force_respa(vflag,ilevel_respa,0); + ((Respa *) update->integrate)->copy_f_flevel(ilevel_respa); + } +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::setup_pre_neighbor() +{ + pre_neighbor(); +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::setup_pre_reverse(int eflag, int vflag) +{ + pre_reverse(eflag,vflag); +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::min_setup(int vflag) +{ + pre_neighbor(); + post_force(vflag); +} + +/* ---------------------------------------------------------------------- + create local list of bitorsions + if one or more atoms in bitorsion are on this proc, + this proc lists the bitorsion exactly once +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::pre_neighbor() +{ + int i,m,atom1,atom2,atom3,atom4,atom5; + + // guesstimate initial length of local bitorsion list + // if nbitorsions was not set (due to read_restart, no read_data), + // then list will grow by LISTDELTA chunks + + if (max_bitorsion_list == 0) { + if (nprocs == 1) max_bitorsion_list = nbitorsions; + else max_bitorsion_list = + static_cast (LB_FACTOR*nbitorsions/nprocs); + memory->create(bitorsion_list,max_bitorsion_list,6, + "bitorsion:bitorsion_list"); + } + + int nlocal = atom->nlocal; + nbitorsion_list = 0; + + for (i = 0; i < nlocal; i++) { + for (m = 0; m < num_bitorsion[i]; m++) { + atom1 = atom->map(bitorsion_atom1[i][m]); + atom2 = atom->map(bitorsion_atom2[i][m]); + atom3 = atom->map(bitorsion_atom3[i][m]); + atom4 = atom->map(bitorsion_atom4[i][m]); + atom5 = atom->map(bitorsion_atom5[i][m]); + + if (atom1 == -1 || atom2 == -1 || atom3 == -1 || + atom4 == -1 || atom5 == -1) + error->one(FLERR,"BiTorsion atoms {} {} {} {} {} {} missing on " + "proc {} at step {}", + bitorsion_atom1[i][m],bitorsion_atom2[i][m], + bitorsion_atom3[i][m],bitorsion_atom4[i][m], + bitorsion_atom5[i][m],me,update->ntimestep); + atom1 = domain->closest_image(i,atom1); + atom2 = domain->closest_image(i,atom2); + atom3 = domain->closest_image(i,atom3); + atom4 = domain->closest_image(i,atom4); + atom5 = domain->closest_image(i,atom5); + + if (i <= atom1 && i <= atom2 && i <= atom3 && + i <= atom4 && i <= atom5) { + if (nbitorsion_list == max_bitorsion_list) { + max_bitorsion_list += LISTDELTA; + memory->grow(bitorsion_list,max_bitorsion_list,6, + "bitorsion:bitorsion_list"); + } + bitorsion_list[nbitorsion_list][0] = atom1; + bitorsion_list[nbitorsion_list][1] = atom2; + bitorsion_list[nbitorsion_list][2] = atom3; + bitorsion_list[nbitorsion_list][3] = atom4; + bitorsion_list[nbitorsion_list][4] = atom5; + bitorsion_list[nbitorsion_list][5] = bitorsion_type[i][m]; + nbitorsion_list++; + } + } + } +} + +/* ---------------------------------------------------------------------- + store eflag, so can use it in post_force to tally per-atom energies +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::pre_reverse(int eflag, int /*vflag*/) +{ + eflag_caller = eflag; +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::post_force(int vflag) +{ + if (disable) return; + + int ia,ib,ic,id,ie; + int nlo,nhi,nt; + int xlo,ylo; + int pos1,pos2; + double e,fgrp,sign; + double angle1,angle2; + double value1,value2; + double cosine1,cosine2; + double xt,yt,zt,rt2; + double xu,yu,zu,ru2; + double xv,yv,zv,rv2; + double rtru,rurv; + double x1l,x1u; + double y1l,y1u; + double xia,yia,zia; + double xib,yib,zib; + double xic,yic,zic; + double xid,yid,zid; + double xie,yie,zie; + double xba,yba,zba; + double xdc,ydc,zdc; + double xcb,ycb,zcb; + double xed,yed,zed; + double rcb,rdc; + double xca,yca,zca; + double xdb,ydb,zdb; + double xec,yec,zec; + double dedang1,dedang2; + double dedxt,dedyt,dedzt; + double dedxu,dedyu,dedzu; + double dedxu2,dedyu2,dedzu2; + double dedxv2,dedyv2,dedzv2; + double dedxia,dedyia,dedzia; + double dedxib,dedyib,dedzib; + double dedxic,dedyic,dedzic; + double dedxid,dedyid,dedzid; + double dedxib2,dedyib2,dedzib2; + double dedxic2,dedyic2,dedzic2; + double dedxid2,dedyid2,dedzid2; + double dedxie2,dedyie2,dedzie2; + double vxx,vyy,vzz; + double vyx,vzx,vzy; + double vxx2,vyy2,vzz2; + double vyx2,vzx2,vzy2; + double ftt[4],ft12[4]; + double ft1[4],ft2[4]; + + // NOTE: extra until figure everything out + + int k,btype; + double radian; + double engfraction; + int nlist,list[6]; + double v[6]; + + // END of NOTE + + ebitorsion = 0.0; + int eflag = eflag_caller; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + + for (int n = 0; n < nbitorsion_list; n++) { + + ia = bitorsion_list[n][0]; + ib = bitorsion_list[n][1]; + ic = bitorsion_list[n][2]; + id = bitorsion_list[n][3]; + ie = bitorsion_list[n][4]; + + // NOTE: is a btype ever used, i.e. as index into spline tables? + + btype = bitorsion_list[n][5]; + + xia = x[ia][0]; + yia = x[ia][1]; + zia = x[ia][2]; + xib = x[ib][0]; + yib = x[ib][1]; + zib = x[ib][2]; + xic = x[ic][0]; + yic = x[ic][1]; + zic = x[ic][2]; + xid = x[id][0]; + yid = x[id][1]; + zid = x[id][2]; + xie = x[ie][0]; + yie = x[ie][1]; + zie = x[ie][2]; + + xba = xib - xia; + yba = yib - yia; + zba = zib - zia; + xcb = xic - xib; + ycb = yic - yib; + zcb = zic - zib; + xdc = xid - xic; + ydc = yid - yic; + zdc = zid - zic; + xed = xie - xid; + yed = yie - yid; + zed = zie - zid; + + xt = yba*zcb - ycb*zba; + yt = zba*xcb - zcb*xba; + zt = xba*ycb - xcb*yba; + xu = ycb*zdc - ydc*zcb; + yu = zcb*xdc - zdc*xcb; + zu = xcb*ydc - xdc*ycb; + + rt2 = xt*xt + yt*yt + zt*zt; + ru2 = xu*xu + yu*yu + zu*zu; + rtru = sqrt(rt2 * ru2); + xv = ydc*zed - yed*zdc; + yv = zdc*xed - zed*xdc; + zv = xdc*yed - xed*ydc; + rv2 = xv*xv + yv*yv + zv*zv; + rurv = sqrt(ru2 * rv2); + + if (rtru <= 0.0 || rurv <= 0.0) continue; + + rcb = sqrt(xcb*xcb + ycb*ycb + zcb*zcb); + cosine1 = (xt*xu + yt*yu + zt*zu) / rtru; + cosine1 = MIN(1.0,MAX(-1.0,cosine1)); + angle1 = radian * acos(cosine1); + sign = xba*xu + yba*yu + zba*zu; + if (sign < 0.0) angle1 = -angle1; + value1 = angle1; + + rdc = sqrt(xdc*xdc + ydc*ydc + zdc*zdc); + cosine2 = (xu*xv + yu*yv + zu*zv) / rurv; + cosine2 = MIN(1.0,MAX(-1.0,cosine2)); + angle2 = radian * acos(cosine2); + sign = xcb*xv + ycb*yv + zcb*zv; + if (sign < 0.0) angle2 = -angle2; + value2 = angle2; + + // check for inverted chirality at the central atom + + chkttor(ib,ic,id,sign,value1,value2); + + // use bicubic interpolation to compute spline values + // NOTE: need to worry about C vs Fortran indexing + // both here and in the methods called + // NOTE: make sure pos1 and pos2 are ints + + nlo = 1; + nhi = tnx(k); + while (nhi-nlo > 1) { + nt = (nhi+nlo) / 2; + if (ttx(nt,k) > value1) nhi = nt; + else nlo = nt; + } + + xlo = nlo; + nlo = 1; + nhi = tny(k); + while (nhi-nlo > 1) { + nt = (nhi + nlo)/2; + if (tty(nt,k) > value2) nhi = nt; + else nlo = nt; + } + + ylo = nlo; + x1l = ttx(xlo,k); + x1u = ttx(xlo+1,k); + y1l = tty(ylo,k); + y1u = tty(ylo+1,k); + pos2 = ylo*tnx(k) + xlo; + pos1 = pos2 - tnx(k); + + ftt[0] = tbf(pos1,k); + ftt[1] = tbf(pos1+1,k); + ftt[2] = tbf(pos2+1,k); + ftt[3] = tbf(pos2,k); + + ft1[0] = tbx(pos1,k); + ft1[1] = tbx(pos1+1,k); + ft1[2] = tbx(pos2+1,k); + ft1[3] = tbx(pos2,k); + + ft2[0] = tby(pos1,k); + ft2[1] = tby(pos1+1,k); + ft2[2] = tby(pos2+1,k); + ft2[3] = tby(pos2,k); + + ft12[0] = tbxy(pos1,k); + ft12[1] = tbxy(pos1+1,k); + ft12[2] = tbxy(pos2+1,k); + ft12[3] = tbxy(pos2,k); + + bcuint1(ftt,ft1,ft2,ft12,x1l,x1u,y1l,y1u,value1,value2, + e,dedang1,dedang2); + + // NOTE: remove ttorunit if 1.0 ? + // NOTE: what are radian units ? + // NOTE: value of sign is set twice above ?? + + double ttorunit = 1.0; + e *= ttorunit; + dedang1 = sign * ttorunit * radian * dedang1; + dedang2 = sign * ttorunit * radian * dedang2; + + // fraction of energy for each atom + + engfraction = e * onefifth; + + // chain rule terms for first angle derivative components + + xca = xic - xia; + yca = yic - yia; + zca = zic - zia; + xdb = xid - xib; + ydb = yid - yib; + zdb = zid - zib; + + dedxt = dedang1 * (yt*zcb - ycb*zt) / (rt2*rcb); + dedyt = dedang1 * (zt*xcb - zcb*xt) / (rt2*rcb); + dedzt = dedang1 * (xt*ycb - xcb*yt) / (rt2*rcb); + dedxu = -dedang1 * (yu*zcb - ycb*zu) / (ru2*rcb); + dedyu = -dedang1 * (zu*xcb - zcb*xu) / (ru2*rcb); + dedzu = -dedang1 * (xu*ycb - xcb*yu) / (ru2*rcb); + + // compute first derivative components for first angle + + dedxia = zcb*dedyt - ycb*dedzt; + dedyia = xcb*dedzt - zcb*dedxt; + dedzia = ycb*dedxt - xcb*dedyt; + dedxib = yca*dedzt - zca*dedyt + zdc*dedyu - ydc*dedzu; + dedyib = zca*dedxt - xca*dedzt + xdc*dedzu - zdc*dedxu; + dedzib = xca*dedyt - yca*dedxt + ydc*dedxu - xdc*dedyu; + dedxic = zba*dedyt - yba*dedzt + ydb*dedzu - zdb*dedyu; + dedyic = xba*dedzt - zba*dedxt + zdb*dedxu - xdb*dedzu; + dedzic = yba*dedxt - xba*dedyt + xdb*dedyu - ydb*dedxu; + dedxid = zcb*dedyu - ycb*dedzu; + dedyid = xcb*dedzu - zcb*dedxu; + dedzid = ycb*dedxu - xcb*dedyu; + + // chain rule terms for second angle derivative components + + xec = xie - xic; + yec = yie - yic; + zec = zie - zic; + + dedxu2 = dedang2 * (yu*zdc - ydc*zu) / (ru2*rdc); + dedyu2 = dedang2 * (zu*xdc - zdc*xu) / (ru2*rdc); + dedzu2 = dedang2 * (xu*ydc - xdc*yu) / (ru2*rdc); + dedxv2 = -dedang2 * (yv*zdc - ydc*zv) / (rv2*rdc); + dedyv2 = -dedang2 * (zv*xdc - zdc*xv) / (rv2*rdc); + dedzv2 = -dedang2 * (xv*ydc - xdc*yv) / (rv2*rdc); + + // compute first derivative components for second angle + + dedxib2 = zdc*dedyu2 - ydc*dedzu2; + dedyib2 = xdc*dedzu2 - zdc*dedxu2; + dedzib2 = ydc*dedxu2 - xdc*dedyu2; + dedxic2 = ydb*dedzu2 - zdb*dedyu2 + zed*dedyv2 - yed*dedzv2; + dedyic2 = zdb*dedxu2 - xdb*dedzu2 + xed*dedzv2 - zed*dedxv2; + dedzic2 = xdb*dedyu2 - ydb*dedxu2 + yed*dedxv2 - xed*dedyv2; + dedxid2 = zcb*dedyu2 - ycb*dedzu2 + yec*dedzv2 - zec*dedyv2; + dedyid2 = xcb*dedzu2 - zcb*dedxu2 + zec*dedxv2 - xec*dedzv2; + dedzid2 = ycb*dedxu2 - xcb*dedyu2 + xec*dedyv2 - yec*dedxv2; + dedxie2 = zdc*dedyv2 - ydc*dedzv2; + dedyie2 = xdc*dedzv2 - zdc*dedxv2; + dedzie2 = ydc*dedxv2 - xdc*dedyv2; + + // increment the torsion-torsion energy and gradient + + if (ia < nlocal) { + ebitorsion += engfraction; + f[ia][0] += dedxia; + f[ia][1] += dedyia; + f[ia][2] += dedzia; + } + + if (ib < nlocal) { + ebitorsion += engfraction; + f[ib][0] += dedxib + dedxib2; + f[ib][1] += dedyib + dedyib2; + f[ib][2] += dedzib + dedzib2; + } + + if (ic < nlocal) { + ebitorsion += engfraction; + f[ic][0] += dedxic + dedxic2; + f[ic][1] += dedyic + dedyic2; + f[ic][2] += dedzic + dedzic2; + } + + if (id < nlocal) { + ebitorsion += engfraction; + f[id][0] += dedxid + dedxid2; + f[id][1] += dedyid + dedyid2; + f[id][2] += dedzid + dedzid2; + } + + if (ie < nlocal) { + ebitorsion += engfraction; + f[ie][0] += dedxie2; + f[ie][1] += dedyie2; + f[ie][2] += dedzie2; + } + + // increment the internal virial tensor components + + if (evflag) { + nlist = 0; + if (ia < nlocal) list[nlist++] = ia; + if (ib < nlocal) list[nlist++] = ib; + if (ic < nlocal) list[nlist++] = ic; + if (id < nlocal) list[nlist++] = id; + if (ie < nlocal) list[nlist++] = ie; + + vxx = xcb*(dedxic+dedxid) - xba*dedxia + xdc*dedxid; + vyx = ycb*(dedxic+dedxid) - yba*dedxia + ydc*dedxid; + vzx = zcb*(dedxic+dedxid) - zba*dedxia + zdc*dedxid; + vyy = ycb*(dedyic+dedyid) - yba*dedyia + ydc*dedyid; + vzy = zcb*(dedyic+dedyid) - zba*dedyia + zdc*dedyid; + vzz = zcb*(dedzic+dedzid) - zba*dedzia + zdc*dedzid; + vxx2 = xdc*(dedxid2+dedxie2) - xcb*dedxib2 + xed*dedxie2; + vyx2 = ydc*(dedxid2+dedxie2) - ycb*dedxib2 + yed*dedxie2; + vzx2 = zdc*(dedxid2+dedxie2) - zcb*dedxib2 + zed*dedxie2; + vyy2 = ydc*(dedyid2+dedyie2) - ycb*dedyib2 + yed*dedyie2; + vzy2 = zdc*(dedyid2+dedyie2) - zcb*dedyib2 + zed*dedyie2; + vzz2 = zdc*(dedzid2+dedzie2) - zcb*dedzib2 + zed*dedzie2; + + v[0] += vxx + vxx2; + v[1] += vyy + vyy2; + v[2] += vzz + vzz2; + v[3] += vyx + vyx2; + v[4] += vzx + vzx2; + v[5] += vzy + vzy2; + + ev_tally(nlist,list,5.0,e,v); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::post_force_respa(int vflag, int ilevel, int /*iloop*/) +{ + if (ilevel == ilevel_respa) post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::min_post_force(int vflag) +{ + post_force(vflag); +} + +/* ---------------------------------------------------------------------- + energy of BiTorision term +------------------------------------------------------------------------- */ + +double FixAmoebaBiTorsion::compute_scalar() +{ + double all; + MPI_Allreduce(&ebitorsion,&all,1,MPI_DOUBLE,MPI_SUM,world); + return all; +} + +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- +// methods to read BiTorsion grid file, perform interpolation +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- + +void FixAmoebaBiTorsion::read_grid_data(char *bitorsion_file) +{ + char line[MAXLINE]; + char *eof; + + FILE *fp = nullptr; + if (me == 0) { + fp = utils::open_potential(bitorsion_file,lmp,nullptr); + if (fp == nullptr) + error->one(FLERR,"Cannot open fix amoeba/bitorsion file {}: {}", + bitorsion_file, utils::getsyserror()); + + eof = fgets(line,MAXLINE,fp); + eof = fgets(line,MAXLINE,fp); + eof = fgets(line,MAXLINE,fp); + if (eof == nullptr) + error->one(FLERR,"Unexpected end of fix amoeba/bitorsion file"); + + sscanf(line,"%d",&ntypes); + } + + MPI_Bcast(&ntypes,1,MPI_INT,0,world); + if (ntypes == 0) error->all(FLERR,"Fix amoeba/bitorsion file has no types"); + + btgrid = new double***[ntypes+1]; + nxgrid = new int[ntypes+1]; + nygrid = new int[ntypes+1]; + + // read one array for each BiTorsion type from file + + int tmp,nx,ny; + double xgrid,ygrid,value; + + for (int itype = 1; itype <= ntypes; itype++) { + if (me == 0) { + eof = fgets(line,MAXLINE,fp); + eof = fgets(line,MAXLINE,fp); + if (eof == nullptr) + error->one(FLERR,"Unexpected end of fix amoeba/bitorsion file"); + sscanf(line,"%d %d %d",&tmp,&nx,&ny); + } + + MPI_Bcast(&nx,1,MPI_INT,0,world); + MPI_Bcast(&ny,1,MPI_INT,0,world); + nxgrid[itype] = nx; + nygrid[itype] = ny; + + memory->create(btgrid[itype],nx,ny,3,"bitorsion:btgrid"); + + // NOTE: should read this chunk of lines with utils in single read + + if (me == 0) { + for (int iy = 0; iy < ny; iy++) { + for (int ix = 0; ix < nx; ix++) { + eof = fgets(line,MAXLINE,fp); + if (eof == nullptr) + error->one(FLERR,"Unexpected end of fix amoeba/bitorsion file"); + sscanf(line,"%lg %lg %lg",&xgrid,&ygrid,&value); + btgrid[itype][ix][iy][0] = xgrid; + btgrid[itype][ix][iy][1] = ygrid; + btgrid[itype][ix][iy][2] = value; + } + } + } + + MPI_Bcast(&btgrid[itype][0][0][0],nx*ny*3,MPI_DOUBLE,0,world); + } + + if (me == 0) fclose(fp); +} + +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- +// methods to read and write data file +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- + +void FixAmoebaBiTorsion::read_data_header(char *line) +{ + if (strstr(line,"bitorsions")) { + sscanf(line,BIGINT_FORMAT,&nbitorsions); + } else error->all(FLERR, + "Invalid read data header line for fix amoeba/bitorsion"); +} + +/* ---------------------------------------------------------------------- + unpack N lines in buf from section of data file labeled by keyword + id_offset is applied to atomID fields if multiple data files are read +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::read_data_section(char *keyword, int n, char *buf, + tagint id_offset) +{ + int m,tmp,itype; + tagint atom1,atom2,atom3,atom4,atom5; + char *next; + + next = strchr(buf,'\n'); + *next = '\0'; + int nwords = utils::count_words(utils::trim_comment(buf)); + *next = '\n'; + + if (nwords != 7) + error->all(FLERR,"Incorrect {} format in data file",keyword); + + // loop over lines of BiTorsions + // tokenize the line into values + // each atom in the BiTorsion stores it + + for (int i = 0; i < n; i++) { + next = strchr(buf,'\n'); + *next = '\0'; + sscanf(buf,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT + " " TAGINT_FORMAT " " TAGINT_FORMAT, + &tmp,&itype,&atom1,&atom2,&atom3,&atom4,&atom5); + + atom1 += id_offset; + atom2 += id_offset; + atom3 += id_offset; + atom4 += id_offset; + atom5 += id_offset; + + if ((m = atom->map(atom1)) >= 0) { + if (num_bitorsion[m] == BITORSIONMAX) + error->one(FLERR,"Too many BIORSIONS for one atom"); + bitorsion_type[m][num_bitorsion[m]] = itype; + bitorsion_atom1[m][num_bitorsion[m]] = atom1; + bitorsion_atom2[m][num_bitorsion[m]] = atom2; + bitorsion_atom3[m][num_bitorsion[m]] = atom3; + bitorsion_atom4[m][num_bitorsion[m]] = atom4; + bitorsion_atom5[m][num_bitorsion[m]] = atom5; + num_bitorsion[m]++; + } + + if ((m = atom->map(atom2)) >= 0) { + if (num_bitorsion[m] == BITORSIONMAX) + error->one(FLERR,"Too many BIORSIONS for one atom"); + bitorsion_type[m][num_bitorsion[m]] = itype; + bitorsion_atom1[m][num_bitorsion[m]] = atom1; + bitorsion_atom2[m][num_bitorsion[m]] = atom2; + bitorsion_atom3[m][num_bitorsion[m]] = atom3; + bitorsion_atom4[m][num_bitorsion[m]] = atom4; + bitorsion_atom5[m][num_bitorsion[m]] = atom5; + num_bitorsion[m]++; + } + + if ((m = atom->map(atom3)) >= 0) { + if (num_bitorsion[m] == BITORSIONMAX) + error->one(FLERR,"Too many BIORSIONS for one atom"); + bitorsion_type[m][num_bitorsion[m]] = itype; + bitorsion_atom1[m][num_bitorsion[m]] = atom1; + bitorsion_atom2[m][num_bitorsion[m]] = atom2; + bitorsion_atom3[m][num_bitorsion[m]] = atom3; + bitorsion_atom4[m][num_bitorsion[m]] = atom4; + bitorsion_atom5[m][num_bitorsion[m]] = atom5; + num_bitorsion[m]++; + } + + if ((m = atom->map(atom4)) >= 0) { + if (num_bitorsion[m] == BITORSIONMAX) + error->one(FLERR,"Too many BIORSIONS for one atom"); + bitorsion_type[m][num_bitorsion[m]] = itype; + bitorsion_atom1[m][num_bitorsion[m]] = atom1; + bitorsion_atom2[m][num_bitorsion[m]] = atom2; + bitorsion_atom3[m][num_bitorsion[m]] = atom3; + bitorsion_atom4[m][num_bitorsion[m]] = atom4; + bitorsion_atom5[m][num_bitorsion[m]] = atom5; + num_bitorsion[m]++; + } + + if ((m = atom->map(atom5)) >= 0) { + if (num_bitorsion[m] == BITORSIONMAX) + error->one(FLERR,"Too many BIORSIONS for one atom"); + bitorsion_type[m][num_bitorsion[m]] = itype; + bitorsion_atom1[m][num_bitorsion[m]] = atom1; + bitorsion_atom2[m][num_bitorsion[m]] = atom2; + bitorsion_atom3[m][num_bitorsion[m]] = atom3; + bitorsion_atom4[m][num_bitorsion[m]] = atom4; + bitorsion_atom5[m][num_bitorsion[m]] = atom5; + num_bitorsion[m]++; + } + + buf = next + 1; + } +} + +/* ---------------------------------------------------------------------- */ + +bigint FixAmoebaBiTorsion::read_data_skip_lines(char * /*keyword*/) +{ + return nbitorsions; +} + +/* ---------------------------------------------------------------------- + write Mth header line to file + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_data_header(FILE *fp, int /*mth*/) +{ + fprintf(fp,BIGINT_FORMAT " bitorsions\n",nbitorsions); +} + +/* ---------------------------------------------------------------------- + return size I own for Mth data section + # of data sections = 1 for this fix + // nx = # of BiTorsions owned by my local atoms + // only atom3 owns the BiTorsion in this context + // ny = 6 columns = type + 5 atom IDs +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_data_section_size(int /*mth*/, int &nx, int &ny) +{ + int i,m; + + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + nx = 0; + for (i = 0; i < nlocal; i++) + for (m = 0; m < num_bitorsion[i]; m++) + if (bitorsion_atom3[i][m] == tag[i]) nx++; + + ny = 6; +} + +/* ---------------------------------------------------------------------- + pack values for Mth data section into 2d buf + buf allocated by caller as owned BiTorsions by 6 +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_data_section_pack(int /*mth*/, double **buf) +{ + int i,m; + + // 1st column = BiTorsion type + // 2nd-6th columns = 5 atom IDs + + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + int n = 0; + for (i = 0; i < nlocal; i++) { + for (m = 0; m < num_bitorsion[i]; m++) { + if (bitorsion_atom3[i][m] != tag[i]) continue; + buf[n][0] = ubuf(bitorsion_type[i][m]).d; + buf[n][1] = ubuf(bitorsion_atom1[i][m]).d; + buf[n][2] = ubuf(bitorsion_atom2[i][m]).d; + buf[n][3] = ubuf(bitorsion_atom3[i][m]).d; + buf[n][4] = ubuf(bitorsion_atom4[i][m]).d; + buf[n][5] = ubuf(bitorsion_atom5[i][m]).d; + n++; + } + } +} + +/* ---------------------------------------------------------------------- + write section keyword for Mth data section to file + use Molecules or Charges if that is only field, else use fix ID + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_data_section_keyword(int /*mth*/, FILE *fp) +{ + fprintf(fp,"\nBiTorsions\n\n"); +} + +/* ---------------------------------------------------------------------- + write N lines from buf to file + convert buf fields to int or double depending on styles + index can be used to prepend global numbering + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_data_section(int /*mth*/, FILE *fp, + int n, double **buf, int index) +{ + for (int i = 0; i < n; i++) + fprintf(fp,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT + " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT "\n", + index+i,(int) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, + (tagint) ubuf(buf[i][2]).i,(tagint) ubuf(buf[i][3]).i, + (tagint) ubuf(buf[i][4]).i,(tagint) ubuf(buf[i][5]).i); +} + +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- +// methods for restart and communication +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::write_restart(FILE *fp) +{ + if (comm->me == 0) { + int size = sizeof(bigint); + fwrite(&size,sizeof(int),1,fp); + fwrite(&nbitorsions,sizeof(bigint),1,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::restart(char *buf) +{ + nbitorsions = *((bigint *) buf); +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for restart file +------------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::pack_restart(int i, double *buf) +{ + int n = 1; + for (int m = 0; m < num_bitorsion[i]; m++) { + buf[n++] = ubuf(MAX(bitorsion_type[i][m],-bitorsion_type[i][m])).d; + buf[n++] = ubuf(bitorsion_atom1[i][m]).d; + buf[n++] = ubuf(bitorsion_atom2[i][m]).d; + buf[n++] = ubuf(bitorsion_atom3[i][m]).d; + buf[n++] = ubuf(bitorsion_atom4[i][m]).d; + buf[n++] = ubuf(bitorsion_atom5[i][m]).d; + } + buf[0] = n; + + return n; +} + +/* ---------------------------------------------------------------------- + unpack values from atom->extra array to restart the fix +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::unpack_restart(int nlocal, int nth) +{ + double **extra = atom->extra; + + // skip to Nth set of extra values + // unpack the Nth first values this way because other fixes pack them + + int n = 0; + for (int i = 0; i < nth; i++) n += static_cast (extra[nlocal][n]); + + int count = static_cast (extra[nlocal][n++]); + num_bitorsion[nlocal] = (count-1)/6; + + for (int m = 0; m < num_bitorsion[nlocal]; m++) { + bitorsion_type[nlocal][m] = (int) ubuf(extra[nlocal][n++]).i; + bitorsion_atom1[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + bitorsion_atom2[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + bitorsion_atom3[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + bitorsion_atom4[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + bitorsion_atom5[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + } +} + +/* ---------------------------------------------------------------------- + maxsize of any atom's restart data +------------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::maxsize_restart() +{ + return 1 + BITORSIONMAX*6; +} + +/* ---------------------------------------------------------------------- + size of atom nlocal's restart data +------------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::size_restart(int nlocal) +{ + return 1 + num_bitorsion[nlocal]*6; +} + +/* ---------------------------------------------------------------------- + allocate atom-based array +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::grow_arrays(int nmax) +{ + num_bitorsion = memory->grow(num_bitorsion,nmax,"cmap:num_bitorsion"); + bitorsion_type = memory->grow(bitorsion_type,nmax,BITORSIONMAX, + "cmap:bitorsion_type"); + bitorsion_atom1 = memory->grow(bitorsion_atom1,nmax,BITORSIONMAX, + "cmap:bitorsion_atom1"); + bitorsion_atom2 = memory->grow(bitorsion_atom2,nmax,BITORSIONMAX, + "cmap:bitorsion_atom2"); + bitorsion_atom3 = memory->grow(bitorsion_atom3,nmax,BITORSIONMAX, + "cmap:bitorsion_atom3"); + bitorsion_atom4 = memory->grow(bitorsion_atom4,nmax,BITORSIONMAX, + "cmap:bitorsion_atom4"); + bitorsion_atom5 = memory->grow(bitorsion_atom5,nmax,BITORSIONMAX, + "cmap:bitorsion_atom5"); + + // must initialize num_bitorsion to 0 for added atoms + // may never be set for some atoms when data file is read + + for (int i = nmax_previous; i < nmax; i++) num_bitorsion[i] = 0; + nmax_previous = nmax; +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based array +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::copy_arrays(int i, int j, int /*delflag*/) +{ + num_bitorsion[j] = num_bitorsion[i]; + + for (int k = 0; k < num_bitorsion[j]; k++) { + bitorsion_type[j][k] = bitorsion_type[i][k]; + bitorsion_atom1[j][k] = bitorsion_atom1[i][k]; + bitorsion_atom2[j][k] = bitorsion_atom2[i][k]; + bitorsion_atom3[j][k] = bitorsion_atom3[i][k]; + bitorsion_atom4[j][k] = bitorsion_atom4[i][k]; + bitorsion_atom5[j][k] = bitorsion_atom5[i][k]; + } +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +void FixAmoebaBiTorsion::set_arrays(int i) +{ + num_bitorsion[i] = 0; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::pack_exchange(int i, double *buf) +{ + int n = 0; + buf[n++] = ubuf(num_bitorsion[i]).d; + for (int m = 0; m < num_bitorsion[i]; m++) { + buf[n++] = ubuf(bitorsion_type[i][m]).d; + buf[n++] = ubuf(bitorsion_atom1[i][m]).d; + buf[n++] = ubuf(bitorsion_atom2[i][m]).d; + buf[n++] = ubuf(bitorsion_atom3[i][m]).d; + buf[n++] = ubuf(bitorsion_atom4[i][m]).d; + buf[n++] = ubuf(bitorsion_atom5[i][m]).d; + } + return n; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +int FixAmoebaBiTorsion::unpack_exchange(int nlocal, double *buf) +{ + int n = 0; + num_bitorsion[nlocal] = (int) ubuf(buf[n++]).i; + for (int m = 0; m < num_bitorsion[nlocal]; m++) { + bitorsion_type[nlocal][m] = (int) ubuf(buf[n++]).i; + bitorsion_atom1[nlocal][m] = (tagint) ubuf(buf[n++]).i; + bitorsion_atom2[nlocal][m] = (tagint) ubuf(buf[n++]).i; + bitorsion_atom3[nlocal][m] = (tagint) ubuf(buf[n++]).i; + bitorsion_atom4[nlocal][m] = (tagint) ubuf(buf[n++]).i; + bitorsion_atom5[nlocal][m] = (tagint) ubuf(buf[n++]).i; + } + return n; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixAmoebaBiTorsion::memory_usage() +{ + int nmax = atom->nmax; + double bytes = (double)nmax * sizeof(int); // num_bitorsion + bytes += (double)nmax*BITORSIONMAX * sizeof(int); // bitorsion_type + bytes += (double)5*nmax*BITORSIONMAX * sizeof(int); // bitorsion_atom 12345 + bytes += (double)6*max_bitorsion_list * sizeof(int); // bitorsion_list + return bytes; +} diff --git a/src/AMOEBA/fix_amoeba_bitorsion.h b/src/AMOEBA/fix_amoeba_bitorsion.h new file mode 100644 index 0000000000..49af5cc95d --- /dev/null +++ b/src/AMOEBA/fix_amoeba_bitorsion.h @@ -0,0 +1,142 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(amoeba/bitorsion,FixAmoebaBiTorsion); +// clang-format on +#else + +#ifndef LMP_FIX_AMOEBA_BITORSION_H +#define LMP_FIX_AMOEBA_BITORSION_H + +#include "fix.h" +namespace LAMMPS_NS { + +class FixAmoebaBiTorsion : public Fix { + public: + FixAmoebaBiTorsion(class LAMMPS *, int, char **); + ~FixAmoebaBiTorsion(); + int setmask(); + void init(); + void setup(int); + void setup_pre_neighbor(); + void setup_pre_reverse(int, int); + void min_setup(int); + void pre_neighbor(); + void pre_reverse(int, int); + void post_force(int); + void post_force_respa(int, int, int); + void min_post_force(int); + double compute_scalar(); + + void read_data_header(char *); + void read_data_section(char *, int, char *, tagint); + bigint read_data_skip_lines(char *); + void write_data_header(FILE *, int); + void write_data_section_size(int, int &, int &); + void write_data_section_pack(int, double **); + void write_data_section_keyword(int, FILE *); + void write_data_section(int, FILE *, int, double **, int); + + void write_restart(FILE *); + void restart(char *); + int pack_restart(int, double *); + void unpack_restart(int, int); + int size_restart(int); + int maxsize_restart(); + + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + + double memory_usage(); + + private: + int nprocs, me; + int eflag_caller; + int ilevel_respa; + int disable; + bigint nbitorsions; + double ebitorsion; + double onefifth; + + // per-atom data for bitorsions stored with each owned atom + + int *num_bitorsion; + int **bitorsion_type; + tagint **bitorsion_atom1, **bitorsion_atom2, **bitorsion_atom3; + tagint **bitorsion_atom4, **bitorsion_atom5; + + // previous max atoms on this proc before grow() is called + + int nmax_previous; + + // list of all bitorsions to compute on this proc + + int nbitorsion_list; + int max_bitorsion_list; + int **bitorsion_list; + + // BiTorsion grid data + + int ntypes; + int *nxgrid,*nygrid; + double ****btgrid; + + // read BiTorsion grid data + + void read_grid_data(char *); +}; +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +UNDOCUMENTED + +E: CMAP atoms %d %d %d %d %d missing on proc %d at step %ld + +UNDOCUMENTED + +E: Invalid CMAP crossterm_type + +UNDOCUMENTED + +E: Cannot open fix cmap file %s + +UNDOCUMENTED + +E: CMAP: atan2 function cannot take 2 zero arguments + +UNDOCUMENTED + +E: Invalid read data header line for fix cmap + +UNDOCUMENTED + +E: Incorrect %s format in data file + +UNDOCUMENTED + +E: Too many CMAP crossterms for one atom + +UNDOCUMENTED + +*/ diff --git a/src/AMOEBA/fix_amoeba_pitorsion.cpp b/src/AMOEBA/fix_amoeba_pitorsion.cpp new file mode 100644 index 0000000000..21f2f957ef --- /dev/null +++ b/src/AMOEBA/fix_amoeba_pitorsion.cpp @@ -0,0 +1,1118 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "fix_amoeba_pitorsion.h" + +#include + +#include +#include "atom.h" +#include "update.h" +#include "respa.h" +#include "domain.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +#define PITORSIONMAX 6 // max # of PiTorsion terms stored by one atom +#define LISTDELTA 8196 +#define LB_FACTOR 1.5 + +/* ---------------------------------------------------------------------- */ + +FixAmoebaPiTorsion::FixAmoebaPiTorsion(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + pitorsion_list(nullptr), num_pitorsion(nullptr), pitorsion_type(nullptr), + pitorsion_atom1(nullptr), pitorsion_atom2(nullptr), pitorsion_atom3(nullptr), + pitorsion_atom4(nullptr), pitorsion_atom5(nullptr), pitorsion_atom6(nullptr) +{ + if (narg != 3) error->all(FLERR,"Illegal fix amoeba/pitorsion command"); + + // settings for this fix + + restart_global = 1; + restart_peratom = 1; + energy_global_flag = energy_peratom_flag = 1; + virial_global_flag = virial_peratom_flag = 1; + thermo_energy = thermo_virial = 1; + centroidstressflag = CENTROID_NOTAVAIL; + peratom_freq = 1; + scalar_flag = 1; + global_freq = 1; + extscalar = 1; + extvector = 1; + wd_header = 1; + wd_section = 1; + respa_level_support = 1; + ilevel_respa = 0; + + MPI_Comm_rank(world,&me); + MPI_Comm_size(world,&nprocs); + + // perform initial allocation of atom-based arrays + + num_pitorsion = nullptr; + pitorsion_type = nullptr; + pitorsion_atom1 = nullptr; + pitorsion_atom2 = nullptr; + pitorsion_atom3 = nullptr; + pitorsion_atom4 = nullptr; + pitorsion_atom5 = nullptr; + pitorsion_atom6 = nullptr; + + // register with Atom class + + nmax_previous = 0; + grow_arrays(atom->nmax); + atom->add_callback(Atom::GROW); + atom->add_callback(Atom::RESTART); + + // list of all pitorsions to compute on this proc + + npitorsion_list = 0; + max_pitorsion_list = 0; + pitorsion_list = nullptr; + + // pitorsion coeff + + kpit = nullptr; + + // zero thermo energy + + epitorsion = 0.0; +} + +/* --------------------------------------------------------------------- */ + +FixAmoebaPiTorsion::~FixAmoebaPiTorsion() +{ + // unregister callbacks to this fix from Atom class + + atom->delete_callback(id,Atom::GROW); + atom->delete_callback(id,Atom::RESTART); + + // per-atom data + + memory->destroy(num_pitorsion); + memory->destroy(pitorsion_type); + memory->destroy(pitorsion_atom1); + memory->destroy(pitorsion_atom2); + memory->destroy(pitorsion_atom3); + memory->destroy(pitorsion_atom4); + memory->destroy(pitorsion_atom5); + memory->destroy(pitorsion_atom6); + + // local list of bitorsions to compute + + memory->destroy(pitorsion_list); + + // coeff + + memory->destroy(kpit); +} + +/* ---------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::setmask() +{ + int mask = 0; + mask |= PRE_NEIGHBOR; + mask |= PRE_REVERSE; + mask |= POST_FORCE; + mask |= POST_FORCE_RESPA; + mask |= MIN_POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::init() +{ + if (utils::strmatch(update->integrate_style,"^respa")) { + ilevel_respa = ((Respa *) update->integrate)->nlevels-1; + if (respa_level >= 0) ilevel_respa = MIN(respa_level,ilevel_respa); + } + + // check if PairAmoeba disabled pitorsion terms + + Pair *pair = force->pair_match("amoeba",1,0); + + if (!pair) disable = 0; + else { + int tmp; + int flag = *((int *) pair->extract("pitorsion_flag",tmp)); + disable = flag ? 0 : 1; + } + + // constant + + onesixth = 1.0/6.0; +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::setup(int vflag) +{ + pre_neighbor(); + + if (utils::strmatch(update->integrate_style,"^verlet")) + post_force(vflag); + else { + ((Respa *) update->integrate)->copy_flevel_f(ilevel_respa); + post_force_respa(vflag,ilevel_respa,0); + ((Respa *) update->integrate)->copy_f_flevel(ilevel_respa); + } +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::setup_pre_neighbor() +{ + pre_neighbor(); +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::setup_pre_reverse(int eflag, int vflag) +{ + pre_reverse(eflag,vflag); +} + +/* --------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::min_setup(int vflag) +{ + pre_neighbor(); + post_force(vflag); +} + +/* ---------------------------------------------------------------------- + create local list of pitorsions + if one or more atoms in pitorsion are on this proc, + this proc lists the pitorsion exactly once +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::pre_neighbor() +{ + int i,m,atom1,atom2,atom3,atom4,atom5,atom6; + + // guesstimate initial length of local pitorsion list + // if npitorsions was not set (due to read_restart, no read_data), + // then list will grow by LISTDELTA chunks + + if (max_pitorsion_list == 0) { + if (nprocs == 1) max_pitorsion_list = npitorsions; + else max_pitorsion_list = + static_cast (LB_FACTOR*npitorsions/nprocs); + memory->create(pitorsion_list,max_pitorsion_list,7, + "pitorsion:pitorsion_list"); + } + + int nlocal = atom->nlocal; + npitorsion_list = 0; + + for (i = 0; i < nlocal; i++) { + for (m = 0; m < num_pitorsion[i]; m++) { + atom1 = atom->map(pitorsion_atom1[i][m]); + atom2 = atom->map(pitorsion_atom2[i][m]); + atom3 = atom->map(pitorsion_atom3[i][m]); + atom4 = atom->map(pitorsion_atom4[i][m]); + atom5 = atom->map(pitorsion_atom5[i][m]); + atom6 = atom->map(pitorsion_atom6[i][m]); + + if (atom1 == -1 || atom2 == -1 || atom3 == -1 || + atom4 == -1 || atom5 == -1 || atom6 == -1) + error->one(FLERR,"PiTorsion atoms {} {} {} {} {} {} missing on " + "proc {} at step {}", + pitorsion_atom1[i][m],pitorsion_atom2[i][m], + pitorsion_atom3[i][m],pitorsion_atom4[i][m], + pitorsion_atom5[i][m],pitorsion_atom6[i][m], + me,update->ntimestep); + atom1 = domain->closest_image(i,atom1); + atom2 = domain->closest_image(i,atom2); + atom3 = domain->closest_image(i,atom3); + atom4 = domain->closest_image(i,atom4); + atom5 = domain->closest_image(i,atom5); + atom6 = domain->closest_image(i,atom6); + + if (i <= atom1 && i <= atom2 && i <= atom3 && + i <= atom4 && i <= atom5 && i <= atom6) { + if (npitorsion_list == max_pitorsion_list) { + max_pitorsion_list += LISTDELTA; + memory->grow(pitorsion_list,max_pitorsion_list,7, + "pitorsion:pitorsion_list"); + } + pitorsion_list[npitorsion_list][0] = atom1; + pitorsion_list[npitorsion_list][1] = atom2; + pitorsion_list[npitorsion_list][2] = atom3; + pitorsion_list[npitorsion_list][3] = atom4; + pitorsion_list[npitorsion_list][4] = atom5; + pitorsion_list[npitorsion_list][5] = atom6; + pitorsion_list[npitorsion_list][6] = pitorsion_type[i][m]; + npitorsion_list++; + } + } + } +} + +/* ---------------------------------------------------------------------- + store eflag, so can use it in post_force to tally per-atom energies +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::pre_reverse(int eflag, int /*vflag*/) +{ + eflag_caller = eflag; +} + +/* ---------------------------------------------------------------------- + compute PiTorsion terms +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::post_force(int vflag) +{ + if (disable) return; + + int ia,ib,ic,id,ie,ig,ptype; + double e,dedphi,engfraction; + double xt,yt,zt,rt2; + double xu,yu,zu,ru2; + double xtu,ytu,ztu; + double rdc,rtru; + double v2,c2,s2; + double phi2,dphi2; + double sine,cosine; + double sine2,cosine2; + double xia,yia,zia; + double xib,yib,zib; + double xic,yic,zic; + double xid,yid,zid; + double xie,yie,zie; + double xig,yig,zig; + double xip,yip,zip; + double xiq,yiq,ziq; + double xad,yad,zad; + double xbd,ybd,zbd; + double xec,yec,zec; + double xgc,ygc,zgc; + double xcp,ycp,zcp; + double xdc,ydc,zdc; + double xqd,yqd,zqd; + double xdp,ydp,zdp; + double xqc,yqc,zqc; + double dedxt,dedyt,dedzt; + double dedxu,dedyu,dedzu; + double dedxia,dedyia,dedzia; + double dedxib,dedyib,dedzib; + double dedxic,dedyic,dedzic; + double dedxid,dedyid,dedzid; + double dedxie,dedyie,dedzie; + double dedxig,dedyig,dedzig; + double dedxip,dedyip,dedzip; + double dedxiq,dedyiq,dedziq; + double vxterm,vyterm,vzterm; + double vxx,vyy,vzz; + double vyx,vzx,vzy; + + int nlist,list[6]; + double v[6]; + + epitorsion = 0.0; + int eflag = eflag_caller; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + + for (int n = 0; n < npitorsion_list; n++) { + ia = pitorsion_list[n][0]; + ib = pitorsion_list[n][1]; + ic = pitorsion_list[n][2]; + id = pitorsion_list[n][3]; + ie = pitorsion_list[n][4]; + ig = pitorsion_list[n][5]; + ptype = pitorsion_list[n][6]; + + // compute the value of the pi-system torsion angle + + xia = x[ia][0]; + yia = x[ia][1]; + zia = x[ia][2]; + xib = x[ib][0]; + yib = x[ib][1]; + zib = x[ib][2]; + xic = x[ic][0]; + yic = x[ic][1]; + zic = x[ic][2]; + xid = x[id][0]; + yid = x[id][1]; + zid = x[id][2]; + xie = x[ie][0]; + yie = x[ie][1]; + zie = x[ie][2]; + xig = x[ig][0]; + yig = x[ig][1]; + zig = x[ig][2]; + + xad = xia - xid; + yad = yia - yid; + zad = zia - zid; + xbd = xib - xid; + ybd = yib - yid; + zbd = zib - zid; + xec = xie - xic; + yec = yie - yic; + zec = zie - zic; + xgc = xig - xic; + ygc = yig - yic; + zgc = zig - zic; + + xip = yad*zbd - ybd*zad + xic; + yip = zad*xbd - zbd*xad + yic; + zip = xad*ybd - xbd*yad + zic; + xiq = yec*zgc - ygc*zec + xid; + yiq = zec*xgc - zgc*xec + yid; + ziq = xec*ygc - xgc*yec + zid; + xcp = xic - xip; + ycp = yic - yip; + zcp = zic - zip; + xdc = xid - xic; + ydc = yid - yic; + zdc = zid - zic; + xqd = xiq - xid; + yqd = yiq - yid; + zqd = ziq - zid; + + xt = ycp*zdc - ydc*zcp; + yt = zcp*xdc - zdc*xcp; + zt = xcp*ydc - xdc*ycp; + xu = ydc*zqd - yqd*zdc; + yu = zdc*xqd - zqd*xdc; + zu = xdc*yqd - xqd*ydc; + xtu = yt*zu - yu*zt; + ytu = zt*xu - zu*xt; + ztu = xt*yu - xu*yt; + rt2 = xt*xt + yt*yt + zt*zt; + ru2 = xu*xu + yu*yu + zu*zu; + rtru = sqrt(rt2*ru2); + + if (rtru <= 0.0) continue; + + rdc = sqrt(xdc*xdc + ydc*ydc + zdc*zdc); + cosine = (xt*xu + yt*yu + zt*zu) / rtru; + sine = (xdc*xtu + ydc*ytu + zdc*ztu) / (rdc*rtru); + + // set the pi-system torsion parameters for this angle + + v2 = kpit[ptype]; + c2 = -1.0; + s2 = 0.0; + + // compute the multiple angle trigonometry and the phase terms + + cosine2 = cosine*cosine - sine*sine; + sine2 = 2.0 * cosine * sine; + phi2 = 1.0 + (cosine2*c2 + sine2*s2); + dphi2 = 2.0 * (cosine2*s2 - sine2*c2); + + // calculate pi-system torsion energy and master chain rule term + // NOTE: remove ptorunit if 1.0 ? + + double ptorunit = 1.0; + e = ptorunit * v2 * phi2; + dedphi = ptorunit * v2 * dphi2; + + // fraction of energy for each atom + + engfraction = e * onesixth; + + // chain rule terms for first derivative components + + xdp = xid - xip; + ydp = yid - yip; + zdp = zid - zip; + xqc = xiq - xic; + yqc = yiq - yic; + zqc = ziq - zic; + dedxt = dedphi * (yt*zdc - ydc*zt) / (rt2*rdc); + dedyt = dedphi * (zt*xdc - zdc*xt) / (rt2*rdc); + dedzt = dedphi * (xt*ydc - xdc*yt) / (rt2*rdc); + dedxu = -dedphi * (yu*zdc - ydc*zu) / (ru2*rdc); + dedyu = -dedphi * (zu*xdc - zdc*xu) / (ru2*rdc); + dedzu = -dedphi * (xu*ydc - xdc*yu) / (ru2*rdc); + + // compute first derivative components for pi-system angle + + dedxip = zdc*dedyt - ydc*dedzt; + dedyip = xdc*dedzt - zdc*dedxt; + dedzip = ydc*dedxt - xdc*dedyt; + dedxic = ydp*dedzt - zdp*dedyt + zqd*dedyu - yqd*dedzu; + dedyic = zdp*dedxt - xdp*dedzt + xqd*dedzu - zqd*dedxu; + dedzic = xdp*dedyt - ydp*dedxt + yqd*dedxu - xqd*dedyu; + dedxid = zcp*dedyt - ycp*dedzt + yqc*dedzu - zqc*dedyu; + dedyid = xcp*dedzt - zcp*dedxt + zqc*dedxu - xqc*dedzu; + dedzid = ycp*dedxt - xcp*dedyt + xqc*dedyu - yqc*dedxu; + dedxiq = zdc*dedyu - ydc*dedzu; + dedyiq = xdc*dedzu - zdc*dedxu; + dedziq = ydc*dedxu - xdc*dedyu; + + // compute first derivative components for individual atoms + + dedxia = ybd*dedzip - zbd*dedyip; + dedyia = zbd*dedxip - xbd*dedzip; + dedzia = xbd*dedyip - ybd*dedxip; + dedxib = zad*dedyip - yad*dedzip; + dedyib = xad*dedzip - zad*dedxip; + dedzib = yad*dedxip - xad*dedyip; + dedxie = ygc*dedziq - zgc*dedyiq; + dedyie = zgc*dedxiq - xgc*dedziq; + dedzie = xgc*dedyiq - ygc*dedxiq; + dedxig = zec*dedyiq - yec*dedziq; + dedyig = xec*dedziq - zec*dedxiq; + dedzig = yec*dedxiq - xec*dedyiq; + dedxic = dedxic + dedxip - dedxie - dedxig; + dedyic = dedyic + dedyip - dedyie - dedyig; + dedzic = dedzic + dedzip - dedzie - dedzig; + dedxid = dedxid + dedxiq - dedxia - dedxib; + dedyid = dedyid + dedyiq - dedyia - dedyib; + dedzid = dedzid + dedziq - dedzia - dedzib; + + // forces and energy + + if (ia < nlocal) { + epitorsion += engfraction; + f[ia][0] += dedxia; + f[ia][1] += dedyia; + f[ia][2] += dedzia; + } + + if (ib < nlocal) { + epitorsion += engfraction; + f[ib][0] += dedxib; + f[ib][1] += dedyib; + f[ib][2] += dedzib; + } + + if (ic < nlocal) { + epitorsion += engfraction; + f[ic][0] += dedxic; + f[ic][1] += dedyic; + f[ic][2] += dedzic; + } + + if (id < nlocal) { + epitorsion += engfraction; + f[id][0] += dedxid; + f[id][1] += dedyid; + f[id][2] += dedzid; + } + + if (ie < nlocal) { + epitorsion += engfraction; + f[ie][0] += dedxie; + f[ie][1] += dedyie; + f[ie][2] += dedzie; + } + + if (ig < nlocal) { + epitorsion += engfraction; + f[ig][0] += dedxig; + f[ig][1] += dedyig; + f[ig][2] += dedzig; + } + + // virial tensor components + + if (evflag) { + nlist = 0; + if (ia < nlocal) list[nlist++] = ia; + if (ib < nlocal) list[nlist++] = ib; + if (ic < nlocal) list[nlist++] = ic; + if (id < nlocal) list[nlist++] = id; + if (ie < nlocal) list[nlist++] = ie; + if (ig < nlocal) list[nlist++] = ig; + + vxterm = dedxid + dedxia + dedxib; + vyterm = dedyid + dedyia + dedyib; + vzterm = dedzid + dedzia + dedzib; + v[0] = xdc*vxterm + xcp*dedxip - xqd*dedxiq; + v[1] = ydc*vyterm + ycp*dedyip - yqd*dedyiq; + v[2] = zdc*vzterm + zcp*dedzip - zqd*dedziq; + v[3] = ydc*vxterm + ycp*dedxip - yqd*dedxiq; + v[4] = zdc*vxterm + zcp*dedxip - zqd*dedxiq; + v[5] = zdc*vyterm + zcp*dedyip - zqd*dedyiq; + + ev_tally(nlist,list,6.0,e,v); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::post_force_respa(int vflag, int ilevel, int /*iloop*/) +{ + if (ilevel == ilevel_respa) post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::min_post_force(int vflag) +{ + post_force(vflag); +} + +/* ---------------------------------------------------------------------- + energy of PiTorsion term +------------------------------------------------------------------------- */ + +double FixAmoebaPiTorsion::compute_scalar() +{ + double all; + MPI_Allreduce(&epitorsion,&all,1,MPI_DOUBLE,MPI_SUM,world); + return all; +} + +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- +// methods to read and write data file +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- + +void FixAmoebaPiTorsion::read_data_header(char *line) +{ + if (strstr(line,"pitorsions")) { + sscanf(line,BIGINT_FORMAT,&npitorsions); + } else if (strstr(line,"pitorsion types")) { + sscanf(line,"%d",&npitorsion_types); + } else error->all(FLERR, + "Invalid read data header line for amoeba/fix pitorsion"); +} + +/* ---------------------------------------------------------------------- + unpack N lines in buf from section of data file labeled by keyword + id_offset is applied to atomID fields if multiple data files are read +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::read_data_section(char *keyword, int n, char *buf, + tagint id_offset) +{ + int which; + + if (strstr(keyword,"PiTorsions")) { + sscanf(keyword,BIGINT_FORMAT,&npitorsions); + which = 0; + } else if (strstr(keyword,"PiTorsion Coeffs")) { + sscanf(keyword,"%d",&npitorsion_types); + which = 1; + } else error->all(FLERR,"Invalid read data section for fix amoeba/pitorsion"); + + // loop over lines of PiTorsion Coeffs + // tokenize the line into values + // initialize kpit vector + + if (which == 1) { + int itype; + double value; + char *next; + + memory->create(kpit,npitorsion_types+1,"pitorsion:kpit"); + + for (int i = 0; i < n; i++) { + next = strchr(buf,'\n'); + *next = '\0'; + sscanf(buf,"%d %lg",&itype,&value); + if (itype <= 0 || itype > npitorsion_types) + error->all(FLERR,"Incorrect args for fix amoeba/pitorsion coeffs"); + kpit[itype] = value; + buf = next + 1; + } + } + + // loop over lines of PiTorsions + // tokenize the line into values + // each atom in the PiTorsion stores it + + if (which == 0) { + + int m,tmp,itype; + tagint atom1,atom2,atom3,atom4,atom5,atom6; + char *next; + + next = strchr(buf,'\n'); + *next = '\0'; + int nwords = utils::count_words(utils::trim_comment(buf)); + *next = '\n'; + + if (nwords != 8) + error->all(FLERR,"Incorrect {} format in data file",keyword); + + for (int i = 0; i < n; i++) { + next = strchr(buf,'\n'); + *next = '\0'; + sscanf(buf,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT + " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT, + &tmp,&itype,&atom1,&atom2,&atom3,&atom4,&atom5,&atom6); + + atom1 += id_offset; + atom2 += id_offset; + atom3 += id_offset; + atom4 += id_offset; + atom5 += id_offset; + atom6 += id_offset; + + if ((m = atom->map(atom1)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + if ((m = atom->map(atom2)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + if ((m = atom->map(atom3)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + if ((m = atom->map(atom4)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + if ((m = atom->map(atom5)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + if ((m = atom->map(atom6)) >= 0) { + if (num_pitorsion[m] == PITORSIONMAX) + error->one(FLERR,"Too many PiTorsions for one atom"); + pitorsion_type[m][num_pitorsion[m]] = itype; + pitorsion_atom1[m][num_pitorsion[m]] = atom1; + pitorsion_atom2[m][num_pitorsion[m]] = atom2; + pitorsion_atom3[m][num_pitorsion[m]] = atom3; + pitorsion_atom4[m][num_pitorsion[m]] = atom4; + pitorsion_atom5[m][num_pitorsion[m]] = atom5; + pitorsion_atom6[m][num_pitorsion[m]] = atom6; + num_pitorsion[m]++; + } + + buf = next + 1; + } + } +} + +/* ---------------------------------------------------------------------- */ + +bigint FixAmoebaPiTorsion::read_data_skip_lines(char *keyword) +{ + if (strcmp(keyword,"PiTorsions") == 0) return npitorsions; + if (strcmp(keyword,"PiTorsion Coeffs") == 0) return (bigint) npitorsion_types; + return 0; +} + +/* ---------------------------------------------------------------------- + write Mth header line to file + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_data_header(FILE *fp, int mth) +{ + if (mth == 0) fprintf(fp,BIGINT_FORMAT " pitorsions\n",npitorsions); + else if (mth == 1) + fprintf(fp,BIGINT_FORMAT " pitorsion types\n",npitorsion_types); +} + +/* ---------------------------------------------------------------------- + return size I own for Mth data section + # of data sections = 2 for this fix +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_data_section_size(int mth, int &nx, int &ny) +{ + int i,m; + + // PiTorsions section + // nx = # of PiTorsions owned by my local atoms + // only atom3 owns the PiTorsion in this context + // ny = 7 columns = type + 6 atom IDs + + if (mth == 0) { + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + nx = 0; + for (i = 0; i < nlocal; i++) + for (m = 0; m < num_pitorsion[i]; m++) + if (pitorsion_atom3[i][m] == tag[i]) nx++; + + ny = 7; + + // PiTorsion Coeffs section + // nx = # of PiTorsion types + // ny = 2 columns = PiTorsion type + value + // only proc 0 returns a non-zero nx + + } else if (mth == 1) { + if (me == 0) nx = npitorsion_types; + else nx = 0; + ny = 2; + } +} + +/* ---------------------------------------------------------------------- + pack values for Mth data section into 2d buf + buf allocated by caller as owned PiTorsions by 7 +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_data_section_pack(int mth, double **buf) +{ + int i,m; + + // PiTorsions section + // 1st column = PiTorsion type + // 2nd-7th columns = 6 atom IDs + + if (mth == 0) { + + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + int n = 0; + for (i = 0; i < nlocal; i++) { + for (m = 0; m < num_pitorsion[i]; m++) { + if (pitorsion_atom3[i][m] != tag[i]) continue; + buf[n][0] = ubuf(pitorsion_type[i][m]).d; + buf[n][1] = ubuf(pitorsion_atom1[i][m]).d; + buf[n][2] = ubuf(pitorsion_atom2[i][m]).d; + buf[n][3] = ubuf(pitorsion_atom3[i][m]).d; + buf[n][4] = ubuf(pitorsion_atom4[i][m]).d; + buf[n][5] = ubuf(pitorsion_atom5[i][m]).d; + buf[n][6] = ubuf(pitorsion_atom6[i][m]).d; + n++; + } + } + + // PiTorsion Coeffs section + // 1st column = pitorsion type + // 2nd column = value + // only proc 0 returns any data + + } else if (mth == 1) { + if (me) return; + + int n = 0; + for (i = 1; i <= npitorsion_types; i++) { + buf[n][0] = ubuf(i).d; + buf[n][1] = kpit[i]; + n += 2; + } + } +} + +/* ---------------------------------------------------------------------- + write section keyword for Mth data section to file + use Molecules or Charges if that is only field, else use fix ID + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_data_section_keyword(int mth, FILE *fp) +{ + if (mth == 0) fprintf(fp,"\nPiTorsions\n\n"); + else if (mth == 1) fprintf(fp,"\nPiTorsion Coeffs\n\n"); +} + +/* ---------------------------------------------------------------------- + write N lines from buf to file + convert buf fields to int or double depending on styles + index can be used to prepend global numbering + only called by proc 0 +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_data_section(int mth, FILE *fp, + int n, double **buf, int index) +{ + // PiTorsions section + + if (mth == 0) { + for (int i = 0; i < n; i++) + fprintf(fp,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT + " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT + " " TAGINT_FORMAT "\n", + index+i,(int) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, + (tagint) ubuf(buf[i][2]).i,(tagint) ubuf(buf[i][3]).i, + (tagint) ubuf(buf[i][4]).i,(tagint) ubuf(buf[i][5]).i, + (tagint) ubuf(buf[i][6]).i); + + // PiTorsion Coeffs section + + } else if (mth == 1) { + for (int i = 0; i < n; i++) + fprintf(fp,"%d %g\n",(int) ubuf(buf[i][0]).i,buf[i][1]); + } +} + +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- +// methods for restart and communication +// ---------------------------------------------------------------------- +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::write_restart(FILE *fp) +{ + if (comm->me == 0) { + int size = sizeof(bigint); + fwrite(&size,sizeof(int),1,fp); + fwrite(&npitorsions,sizeof(bigint),1,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::restart(char *buf) +{ + npitorsions = *((bigint *) buf); +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for restart file +------------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::pack_restart(int i, double *buf) +{ + int n = 1; + for (int m = 0; m < num_pitorsion[i]; m++) { + buf[n++] = ubuf(MAX(pitorsion_type[i][m],-pitorsion_type[i][m])).d; + buf[n++] = ubuf(pitorsion_atom1[i][m]).d; + buf[n++] = ubuf(pitorsion_atom2[i][m]).d; + buf[n++] = ubuf(pitorsion_atom3[i][m]).d; + buf[n++] = ubuf(pitorsion_atom4[i][m]).d; + buf[n++] = ubuf(pitorsion_atom5[i][m]).d; + buf[n++] = ubuf(pitorsion_atom6[i][m]).d; + } + buf[0] = n; + + return n; +} + +/* ---------------------------------------------------------------------- + unpack values from atom->extra array to restart the fix +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::unpack_restart(int nlocal, int nth) +{ + double **extra = atom->extra; + + // skip to Nth set of extra values + // unpack the Nth first values this way because other fixes pack them + + int n = 0; + for (int i = 0; i < nth; i++) n += static_cast (extra[nlocal][n]); + + int count = static_cast (extra[nlocal][n++]); + num_pitorsion[nlocal] = (count-1)/7; + + for (int m = 0; m < num_pitorsion[nlocal]; m++) { + pitorsion_type[nlocal][m] = (int) ubuf(extra[nlocal][n++]).i; + pitorsion_atom1[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + pitorsion_atom2[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + pitorsion_atom3[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + pitorsion_atom4[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + pitorsion_atom5[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + pitorsion_atom6[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i; + } +} + +/* ---------------------------------------------------------------------- + maxsize of any atom's restart data +------------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::maxsize_restart() +{ + return 1 + PITORSIONMAX*6; +} + +/* ---------------------------------------------------------------------- + size of atom nlocal's restart data +------------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::size_restart(int nlocal) +{ + return 1 + num_pitorsion[nlocal]*7; +} + +/* ---------------------------------------------------------------------- + allocate atom-based arrays +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::grow_arrays(int nmax) +{ + num_pitorsion = memory->grow(num_pitorsion,nmax,"pitorsion:num_pitorsion"); + pitorsion_type = memory->grow(pitorsion_type,nmax,PITORSIONMAX, + "pitorsion:pitorsion_type"); + pitorsion_atom1 = memory->grow(pitorsion_atom1,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom1"); + pitorsion_atom2 = memory->grow(pitorsion_atom2,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom2"); + pitorsion_atom3 = memory->grow(pitorsion_atom3,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom3"); + pitorsion_atom4 = memory->grow(pitorsion_atom4,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom4"); + pitorsion_atom5 = memory->grow(pitorsion_atom5,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom5"); + pitorsion_atom6 = memory->grow(pitorsion_atom6,nmax,PITORSIONMAX, + "pitorsion:pitorsion_atom6"); + + // initialize num_pitorion to 0 for added atoms + // may never be set for some atoms when data file is read + + for (int i = nmax_previous; i < nmax; i++) num_pitorsion[i] = 0; + nmax_previous = nmax; +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based array +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::copy_arrays(int i, int j, int /*delflag*/) +{ + num_pitorsion[j] = num_pitorsion[i]; + + for (int k = 0; k < num_pitorsion[j]; k++) { + pitorsion_type[j][k] = pitorsion_type[i][k]; + pitorsion_atom1[j][k] = pitorsion_atom1[i][k]; + pitorsion_atom2[j][k] = pitorsion_atom2[i][k]; + pitorsion_atom3[j][k] = pitorsion_atom3[i][k]; + pitorsion_atom4[j][k] = pitorsion_atom4[i][k]; + pitorsion_atom5[j][k] = pitorsion_atom5[i][k]; + pitorsion_atom6[j][k] = pitorsion_atom6[i][k]; + } +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +void FixAmoebaPiTorsion::set_arrays(int i) +{ + num_pitorsion[i] = 0; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::pack_exchange(int i, double *buf) +{ + int n = 0; + buf[n++] = ubuf(num_pitorsion[i]).d; + for (int m = 0; m < num_pitorsion[i]; m++) { + buf[n++] = ubuf(pitorsion_type[i][m]).d; + buf[n++] = ubuf(pitorsion_atom1[i][m]).d; + buf[n++] = ubuf(pitorsion_atom2[i][m]).d; + buf[n++] = ubuf(pitorsion_atom3[i][m]).d; + buf[n++] = ubuf(pitorsion_atom4[i][m]).d; + buf[n++] = ubuf(pitorsion_atom5[i][m]).d; + buf[n++] = ubuf(pitorsion_atom6[i][m]).d; + } + return n; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +int FixAmoebaPiTorsion::unpack_exchange(int nlocal, double *buf) +{ + int n = 0; + num_pitorsion[nlocal] = (int) ubuf(buf[n++]).i; + for (int m = 0; m < num_pitorsion[nlocal]; m++) { + pitorsion_type[nlocal][m] = (int) ubuf(buf[n++]).i; + pitorsion_atom1[nlocal][m] = (tagint) ubuf(buf[n++]).i; + pitorsion_atom2[nlocal][m] = (tagint) ubuf(buf[n++]).i; + pitorsion_atom3[nlocal][m] = (tagint) ubuf(buf[n++]).i; + pitorsion_atom4[nlocal][m] = (tagint) ubuf(buf[n++]).i; + pitorsion_atom5[nlocal][m] = (tagint) ubuf(buf[n++]).i; + pitorsion_atom6[nlocal][m] = (tagint) ubuf(buf[n++]).i; + } + return n; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixAmoebaPiTorsion::memory_usage() +{ + int nmax = atom->nmax; + double bytes = (double)nmax * sizeof(int); // num_pitorsion + bytes += (double)nmax*PITORSIONMAX * sizeof(int); // pitorsion_type + bytes += (double)6*nmax*PITORSIONMAX * sizeof(int); // pitorsion_atom 123456 + bytes += (double)7*max_pitorsion_list * sizeof(int); // pitorsion_list + return bytes; +} diff --git a/src/AMOEBA/fix_amoeba_pitorsion.h b/src/AMOEBA/fix_amoeba_pitorsion.h new file mode 100644 index 0000000000..d1404c2580 --- /dev/null +++ b/src/AMOEBA/fix_amoeba_pitorsion.h @@ -0,0 +1,135 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS +// clang-format off +FixStyle(amoeba/pitorsion,FixAmoebaPiTorsion); +// clang-format on +#else + +#ifndef LMP_FIX_AMOEBA_PITORSION_H +#define LMP_FIX_AMOEBA_PITORSION_H + +#include "fix.h" +namespace LAMMPS_NS { + +class FixAmoebaPiTorsion : public Fix { + public: + FixAmoebaPiTorsion(class LAMMPS *, int, char **); + ~FixAmoebaPiTorsion(); + int setmask(); + void init(); + void setup(int); + void setup_pre_neighbor(); + void setup_pre_reverse(int, int); + void min_setup(int); + void pre_neighbor(); + void pre_reverse(int, int); + void post_force(int); + void post_force_respa(int, int, int); + void min_post_force(int); + double compute_scalar(); + + void read_data_header(char *); + void read_data_section(char *, int, char *, tagint); + bigint read_data_skip_lines(char *); + void write_data_header(FILE *, int); + void write_data_section_size(int, int &, int &); + void write_data_section_pack(int, double **); + void write_data_section_keyword(int, FILE *); + void write_data_section(int, FILE *, int, double **, int); + + void write_restart(FILE *); + void restart(char *); + int pack_restart(int, double *); + void unpack_restart(int, int); + int size_restart(int); + int maxsize_restart(); + + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + + double memory_usage(); + + private: + int nprocs, me; + int eflag_caller; + int ilevel_respa; + int disable; + bigint npitorsions; + int npitorsion_types; + double epitorsion; + double onesixth; + + double *kpit; + + // per-atom data for pitorsions stored with each owned atom + + int *num_pitorsion; + int **pitorsion_type; + tagint **pitorsion_atom1, **pitorsion_atom2, **pitorsion_atom3; + tagint **pitorsion_atom4, **pitorsion_atom5, **pitorsion_atom6; + + // previous max atoms on this proc before grow() is called + + int nmax_previous; + + // list of all pitorsions to compute on this proc + + int npitorsion_list; + int max_pitorsion_list; + int **pitorsion_list; +}; +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +UNDOCUMENTED + +E: CMAP atoms %d %d %d %d %d missing on proc %d at step %ld + +UNDOCUMENTED + +E: Invalid CMAP crossterm_type + +UNDOCUMENTED + +E: Cannot open fix cmap file %s + +UNDOCUMENTED + +E: CMAP: atan2 function cannot take 2 zero arguments + +UNDOCUMENTED + +E: Invalid read data header line for fix cmap + +UNDOCUMENTED + +E: Incorrect %s format in data file + +UNDOCUMENTED + +E: Too many CMAP crossterms for one atom + +UNDOCUMENTED + +*/ diff --git a/src/AMOEBA/improper_amoeba.cpp b/src/AMOEBA/improper_amoeba.cpp new file mode 100644 index 0000000000..93a9b412cd --- /dev/null +++ b/src/AMOEBA/improper_amoeba.cpp @@ -0,0 +1,328 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "improper_amoeba.h" + +#include +#include "atom.h" +#include "comm.h" +#include "update.h" +#include "neighbor.h" +#include "force.h" +#include "pair.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define TOLERANCE 0.05 +#define SMALL 0.001 + +/* ---------------------------------------------------------------------- */ + +ImproperAmoeba::ImproperAmoeba(LAMMPS *lmp) : Improper(lmp) +{ + writedata = 1; +} + +/* ---------------------------------------------------------------------- */ + +ImproperAmoeba::~ImproperAmoeba() +{ + if (allocated && !copymode) { + memory->destroy(setflag); + memory->destroy(k); + } +} + +/* ---------------------------------------------------------------------- */ + +void ImproperAmoeba::compute(int eflag, int vflag) +{ + if (disable) return; + + int ia,ib,ic,id,n,type; + double xia,yia,zia,xib,yib,zib,xic,yic,zic,xid,yid,zid; + double xab,yab,zab,xcb,ycb,zcb,xdb,ydb,zdb,xad,yad,zad,xcd,ycd,zcd; + double rad2,rcd2,rdb2,dot,cc,ee; + double sine,angle; + double dt,dt2,dt3,dt4,e; + double deddt,sign,dedcos,term; + double dccdxia,dccdyia,dccdzia,dccdxic,dccdyic,dccdzic; + double dccdxid,dccdyid,dccdzid; + double deedxia,deedyia,deedzia,deedxic,deedyic,deedzic; + double deedxid,deedyid,deedzid; + double fa[3],fb[3],fc[3],fd[3]; + + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + int **improperlist = neighbor->improperlist; + int nimproperlist = neighbor->nimproperlist; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + // conversion factors for radians to degrees and vice versa + + double rad2degree = 180.0/MY_PI; + double prefactor = 1.0 / (rad2degree*rad2degree); + + for (n = 0; n < nimproperlist; n++) { + + // in Tinker code, atom1 = D, atom2 = B, atom3 = A, atom4 = C + // for Alligner angle: + // atoms A,C,D form a plane, B is out-of-plane + // angle is between plane and the vector from D to B + + id = improperlist[n][0]; + ib = improperlist[n][1]; + ia = improperlist[n][2]; + ic = improperlist[n][3]; + type = improperlist[n][4]; + + // coordinates of the atoms at trigonal center + + xia = x[ia][0]; + yia = x[ia][1]; + zia = x[ia][2]; + xib = x[ib][0]; + yib = x[ib][1]; + zib = x[ib][2]; + xic = x[ic][0]; + yic = x[ic][1]; + zic = x[ic][2]; + xid = x[id][0]; + yid = x[id][1]; + zid = x[id][2]; + + // compute the out-of-plane bending angle + + xab = xia - xib; + yab = yia - yib; + zab = zia - zib; + xcb = xic - xib; + ycb = yic - yib; + zcb = zic - zib; + xdb = xid - xib; + ydb = yid - yib; + zdb = zid - zib; + xad = xia - xid; + yad = yia - yid; + zad = zia - zid; + xcd = xic - xid; + ycd = yic - yid; + zcd = zic - zid; + + // Allinger angle between A-C-D plane and D-B vector for D-B < AC + + rad2 = xad*xad + yad*yad + zad*zad; + rcd2 = xcd*xcd + ycd*ycd + zcd*zcd; + dot = xad*xcd + yad*ycd + zad*zcd; + cc = rad2*rcd2 - dot*dot; + + // find the out-of-plane angle bending energy + + ee = xdb*(yab*zcb-zab*ycb) + ydb*(zab*xcb-xab*zcb) + zdb*(xab*ycb-yab*xcb); + rdb2 = xdb*xdb + ydb*ydb + zdb*zdb; + if (rdb2 == 0.0 || cc == 0.0) continue; + + sine = fabs(ee) / sqrt(cc*rdb2); + sine = MIN(1.0,sine); + + // angle needs to be in degrees for Tinker formulas + // b/c opbend_3456 coeffs are in mixed units + + angle = rad2degree * asin(sine); + dt = angle; + dt2 = dt * dt; + dt3 = dt2 * dt; + dt4 = dt2 * dt2; + e = prefactor * k[type] * dt2 * (1.0 + opbend_cubic*dt + opbend_quartic*dt2 + + opbend_pentic*dt3 + opbend_sextic*dt4); + + deddt = k[type] * dt * + (2.0 + 3.0*opbend_cubic*dt + 4.0*opbend_quartic*dt2 + + 5.0*opbend_pentic*dt3 + 6.0*opbend_sextic*dt4); + sign = (ee >= 0.0) ? 1.0 : -1.0; + dedcos = -deddt * sign / sqrt(cc*rdb2 - ee*ee); + + // chain rule terms for first derivative components + + term = ee / cc; + dccdxia = (xad*rcd2-xcd*dot) * term; + dccdyia = (yad*rcd2-ycd*dot) * term; + dccdzia = (zad*rcd2-zcd*dot) * term; + dccdxic = (xcd*rad2-xad*dot) * term; + dccdyic = (ycd*rad2-yad*dot) * term; + dccdzic = (zcd*rad2-zad*dot) * term; + dccdxid = -dccdxia - dccdxic; + dccdyid = -dccdyia - dccdyic; + dccdzid = -dccdzia - dccdzic; + + term = ee / rdb2; + deedxia = ydb*zcb - zdb*ycb; + deedyia = zdb*xcb - xdb*zcb; + deedzia = xdb*ycb - ydb*xcb; + deedxic = yab*zdb - zab*ydb; + deedyic = zab*xdb - xab*zdb; + deedzic = xab*ydb - yab*xdb; + deedxid = ycb*zab - zcb*yab + xdb*term; + deedyid = zcb*xab - xcb*zab + ydb*term; + deedzid = xcb*yab - ycb*xab + zdb*term; + + // compute first derivative components for this angle + + fa[0] = dedcos * (dccdxia+deedxia); + fa[1] = dedcos * (dccdyia+deedyia); + fa[2] = dedcos * (dccdzia+deedzia); + fc[0] = dedcos * (dccdxic+deedxic); + fc[1] = dedcos * (dccdyic+deedyic); + fc[2] = dedcos * (dccdzic+deedzic); + fd[0] = dedcos * (dccdxid+deedxid); + fd[1] = dedcos * (dccdyid+deedyid); + fd[2] = dedcos * (dccdzid+deedzid); + fb[0] = -fa[0] - fc[0] - fd[0]; + fb[1] = -fa[1] - fc[1] - fd[1]; + fb[2] = -fa[1] - fc[2] - fd[2]; + + // apply force to each of 4 atoms + + if (newton_bond || id < nlocal) { + f[id][0] += fd[0]; + f[id][1] += fd[1]; + f[id][2] += fd[2]; + } + + if (newton_bond || ib < nlocal) { + f[ib][0] += fb[0]; + f[ib][1] += fb[1]; + f[ib][2] += fb[2]; + } + + if (newton_bond || ia < nlocal) { + f[ia][0] += fa[0]; + f[ia][1] += fa[1]; + f[ia][2] += fa[2]; + } + + if (newton_bond || ic < nlocal) { + f[ic][0] += fc[0]; + f[ic][1] += fc[1]; + f[ic][2] += fc[2]; + } + + if (evflag) + ev_tally(id,ib,ia,ic,nlocal,newton_bond,e,fd,fa,fc, + xdb,ydb,zdb,xab,yab,zab,xic-xia,yic-yia,zic-zia); + } +} + +/* ---------------------------------------------------------------------- */ + +void ImproperAmoeba::allocate() +{ + allocated = 1; + int n = atom->nimpropertypes; + + memory->create(k,n+1,"improper:k"); + + memory->create(setflag,n+1,"improper:setflag"); + for (int i = 1; i <= n; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one type +------------------------------------------------------------------------- */ + +void ImproperAmoeba::coeff(int narg, char **arg) +{ + if (narg != 2) error->all(FLERR,"Incorrect args for improper coefficients"); + if (!allocated) allocate(); + + int ilo,ihi; + utils::bounds(FLERR,arg[0],1,atom->nimpropertypes,ilo,ihi,error); + + double k_one = utils::numeric(FLERR,arg[1],false,lmp); + + // convert chi from degrees to radians + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + k[i] = k_one; + setflag[i] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients"); +} + +/* ---------------------------------------------------------------------- + set opbend higher-order term weights from PairAmoeba +------------------------------------------------------------------------- */ + +void ImproperAmoeba::init_style() +{ + Pair *pair = force->pair_match("amoeba",1,0); + if (!pair) pair = force->pair_match("hippo",1,0); + if (!pair) error->all(FLERR,"Improper amoeba could not find pair amoega"); + + int dim; + opbend_cubic = *(double *) pair->extract("opbend_cubic",dim); + opbend_quartic = *(double *) pair->extract("opbend_quartic",dim); + opbend_pentic = *(double *) pair->extract("opbend_pentic",dim); + opbend_sextic = *(double *) pair->extract("opbend_sextic",dim); + + // check if PairAmoeba disabled improper terms + + int tmp; + int flag = *((int *) pair->extract("improper_flag",tmp)); + disable = flag ? 0 : 1; +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void ImproperAmoeba::write_restart(FILE *fp) +{ + fwrite(&k[1],sizeof(double),atom->nimpropertypes,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void ImproperAmoeba::read_restart(FILE *fp) +{ + allocate(); + + if (comm->me == 0) + utils::sfread(FLERR,&k[1],sizeof(double),atom->nimpropertypes,fp,nullptr,error); + MPI_Bcast(&k[1],atom->nimpropertypes,MPI_DOUBLE,0,world); + + for (int i = 1; i <= atom->nimpropertypes; i++) setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void ImproperAmoeba::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->nimpropertypes; i++) + fprintf(fp,"%d %g\n",i,k[i]); +} diff --git a/src/AMOEBA/improper_amoeba.h b/src/AMOEBA/improper_amoeba.h new file mode 100644 index 0000000000..2c0cbaab6d --- /dev/null +++ b/src/AMOEBA/improper_amoeba.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef IMPROPER_CLASS +// clang-format off +ImproperStyle(amoeba,ImproperAmoeba); +// clang-format on +#else + +#ifndef LMP_IMPROPER_AMOEBA_H +#define LMP_IMPROPER_AMOEBA_H + +#include "improper.h" + +namespace LAMMPS_NS { + +class ImproperAmoeba : public Improper { + public: + ImproperAmoeba(class LAMMPS *); + ~ImproperAmoeba(); + void compute(int, int); + void coeff(int, char **); + void init_style(); + void write_restart(FILE *); + void read_restart(FILE *); + void write_data(FILE *); + + protected: + int disable; + double opbend_cubic,opbend_quartic,opbend_pentic,opbend_sextic; + double *k; + + virtual void allocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +W: Improper problem: %d %ld %d %d %d %d + +Conformation of the 4 listed improper atoms is extreme; you may want +to check your simulation geometry. + +E: Incorrect args for improper coefficients + +Self-explanatory. Check the input script or data file. + +*/ diff --git a/src/AMOEBA/pair_amoeba.cpp b/src/AMOEBA/pair_amoeba.cpp index 5157739f0e..33d07d9e6b 100644 --- a/src/AMOEBA/pair_amoeba.cpp +++ b/src/AMOEBA/pair_amoeba.cpp @@ -41,12 +41,14 @@ using namespace LAMMPS_NS; enum{INDUCE,RSD,SETUP_AMOEBA,SETUP_HIPPO,KMPOLE,AMGROUP,PVAL}; // forward comm enum{FIELD,ZRSD,TORQUE,UFLD}; // reverse comm enum{ARITHMETIC,GEOMETRIC,CUBIC_MEAN,R_MIN,SIGMA,DIAMETER,HARMONIC,HHG,W_H}; -enum{VDWL,REPULSE,QFER,DISP,MPOLE,POLAR,USOLV,DISP_LONG,MPOLE_LONG,POLAR_LONG}; +enum{HAL,REPULSE,QFER,DISP,MPOLE,POLAR,USOLV,DISP_LONG,MPOLE_LONG,POLAR_LONG}; enum{MPOLE_GRID,POLAR_GRID,POLAR_GRIDC,DISP_GRID,INDUCE_GRID,INDUCE_GRIDC}; enum{MUTUAL,OPT,TCG,DIRECT}; enum{GEAR,ASPC,LSQR}; -#define DELTASTACK 1 // change this when debugged +#define DELTASTACK 16 + +#define UIND_DEBUG 0 // also in amoeba_induce.cpp /* ---------------------------------------------------------------------- */ @@ -226,9 +228,7 @@ PairAmoeba::~PairAmoeba() // DEBUG - if (me == 0) { - if (uind_flag) fclose(fp_uind); - } + if (me == 0 && UIND_DEBUG) fclose(fp_uind); } /* ---------------------------------------------------------------------- */ @@ -247,9 +247,18 @@ void PairAmoeba::compute(int eflag, int vflag) evdwl = 0.0; ev_init(eflag,vflag); - // zero internal energy, force, virial terms + // zero energy/virial components - zero_energy_force_virial(); + ehal = erepulse = edisp = epolar = empole = eqxfer = 0.0; + + for (int i = 0; i < 6; i++) { + virhal[i] = 0.0; + virrepulse[i] = 0.0; + virdisp[i] = 0.0; + virpolar[i] = 0.0; + virmpole[i] = 0.0; + virqxfer[i] = 0.0; + } // grow local vectors and arrays if necessary @@ -313,7 +322,7 @@ void PairAmoeba::compute(int eflag, int vflag) add_onefive_neighbors(); if (amoeba) find_hydrogen_neighbors(); find_multipole_neighbors(); - if (induce_flag && poltyp == MUTUAL && pcgprec) precond_neigh(); + if (poltyp == MUTUAL && pcgprec) precond_neigh(); } // reset KSpace recip matrix if box size/shape change dynamically @@ -377,18 +386,18 @@ void PairAmoeba::compute(int eflag, int vflag) // Ewald dispersion, pairwise and long range - if (hippo && disp_flag) dispersion(); + if (hippo && (disp_rspace_flag || disp_kspace_flag)) dispersion(); time4 = MPI_Wtime(); // multipole, pairwise and long range - if (mpole_flag) multipole(); + if (mpole_rspace_flag || mpole_kspace_flag) multipole(); time5 = MPI_Wtime(); // induced dipoles, interative CG relaxation // communicate induce() output values needed by ghost atoms - if (induce_flag) { + if (polar_rspace_flag || polar_kspace_flag) { induce(); cfstyle = INDUCE; comm->forward_comm_pair(this); @@ -397,7 +406,7 @@ void PairAmoeba::compute(int eflag, int vflag) // dipoles, pairwise and long range - if (polar_flag) polar(); + if (polar_rspace_flag || polar_kspace_flag) polar(); time7 = MPI_Wtime(); // charge transfer, pairwise @@ -414,15 +423,6 @@ void PairAmoeba::compute(int eflag, int vflag) nlocal = atom->nlocal; int nall = nlocal + atom->nghost; - for (int i = 0; i < nall; i++) { - f[i][0] = fhal[i][0] + frepulse[i][0] + fdisp[i][0] + - fmpole[i][0] + fpolar[i][0] + fqxfer[i][0]; - f[i][1] = fhal[i][1] + frepulse[i][1] + fdisp[i][1] + - fmpole[i][1] + fpolar[i][1] + fqxfer[i][1]; - f[i][2] = fhal[i][2] + frepulse[i][2] + fdisp[i][2] + - fmpole[i][2] + fpolar[i][2] + fqxfer[i][2]; - } - for (int i = 0; i < 6; i++) virial[i] = virhal[i] + virrepulse[i] + virdisp[i] + virpolar[i] + virmpole[i] + virqxfer[i]; @@ -481,20 +481,24 @@ void PairAmoeba::compute(int eflag, int vflag) utils::logmesg(lmp,"\nAMEOBA/HIPPO timing info:\n"); utils::logmesg(lmp," Init time: {:.6g} {:.6g}\n", time_init,time_init/time_amtot); - utils::logmesg(lmp," Hal time: {:.6g} {:.6g}\n", - time_hal,time_hal/time_amtot*100); - utils::logmesg(lmp," Repls time: {:.6g} {:.6g}\n", - time_repulse,time_repulse/time_amtot*100); - utils::logmesg(lmp," Disp time: {:.6g} {:.6g}\n", - time_disp,time_disp/time_amtot*100); + if (amoeba) + utils::logmesg(lmp," Hal time: {:.6g} {:.6g}\n", + time_hal,time_hal/time_amtot*100); + if (hippo) + utils::logmesg(lmp," Repls time: {:.6g} {:.6g}\n", + time_repulse,time_repulse/time_amtot*100); + if (hippo) + utils::logmesg(lmp," Disp time: {:.6g} {:.6g}\n", + time_disp,time_disp/time_amtot*100); utils::logmesg(lmp," Mpole time: {:.6g} {:.6g}\n", time_mpole,time_mpole/time_amtot*100); utils::logmesg(lmp," Induce time: {:.6g} {:.6g}\n", time_induce,time_induce/time_amtot*100); utils::logmesg(lmp," Polar time: {:.6g} {:.6g}\n", time_polar,time_polar/time_amtot*100); - utils::logmesg(lmp," Qxfer time: {:.6g} {:.6g}\n", - time_qxfer,time_qxfer/time_amtot*100); + if (hippo) + utils::logmesg(lmp," Qxfer time: {:.6g} {:.6g}\n", + time_qxfer,time_qxfer/time_amtot*100); utils::logmesg(lmp," Total time: {:.6g}\n\n",time_amtot); } } @@ -522,49 +526,65 @@ void PairAmoeba::allocate() void PairAmoeba::settings(int narg, char **arg) { - // for now, allow turn on/off of individual FF terms - - // if (narg) error->all(FLERR,"Illegal pair_style command"); - // turn on all FF components by default - hal_flag = repulse_flag = disp_flag = induce_flag = - polar_flag = mpole_flag = qxfer_flag = 1; - rspace_flag = kspace_flag = 1; + hal_flag = repulse_flag = qxfer_flag = 1; + disp_rspace_flag = disp_kspace_flag = 1; + polar_rspace_flag = polar_kspace_flag = 1; + mpole_rspace_flag = mpole_kspace_flag = 1; + bond_flag = angle_flag = dihedral_flag = improper_flag = 1; + urey_flag = pitorsion_flag = bitorsion_flag = 1; - // turn off debug output by default + int newvalue = -1; - uind_flag = 0; + // include only specified FF components - // process optional args - // none turns all FF components off - - int iarg = 0; - while (iarg < narg) { - if (strcmp(arg[iarg],"none") == 0) { - hal_flag = repulse_flag = disp_flag = induce_flag = - polar_flag = mpole_flag = qxfer_flag = 0; - rspace_flag = kspace_flag = 0; - } - else if (strcmp(arg[iarg],"hal") == 0) hal_flag = 1; - else if (strcmp(arg[iarg],"repulse") == 0) repulse_flag = 1; - else if (strcmp(arg[iarg],"disp") == 0) disp_flag = 1; - else if (strcmp(arg[iarg],"induce") == 0) induce_flag = 1; - else if (strcmp(arg[iarg],"polar") == 0) polar_flag = 1; - else if (strcmp(arg[iarg],"mpole") == 0) mpole_flag = 1; - else if (strcmp(arg[iarg],"qxfer") == 0) qxfer_flag = 1; - - else if (strcmp(arg[iarg],"rspace") == 0) rspace_flag = 1; - else if (strcmp(arg[iarg],"kspace") == 0) kspace_flag = 1; - else if (strcmp(arg[iarg],"no-rspace") == 0) rspace_flag = 0; - else if (strcmp(arg[iarg],"no-kspace") == 0) kspace_flag = 0; + if (narg && (strcmp(arg[0],"include") == 0)) { + newvalue = 1; + hal_flag = repulse_flag = qxfer_flag = 0; + disp_rspace_flag = disp_kspace_flag = 0; + polar_rspace_flag = polar_kspace_flag = 0; + mpole_rspace_flag = mpole_kspace_flag = 0; + bond_flag = angle_flag = dihedral_flag = improper_flag = 0; + urey_flag = pitorsion_flag = bitorsion_flag = 0; - // DEBUG flags - - else if (strcmp(arg[iarg],"uind") == 0) uind_flag = 1; - + // exclude only specified FF components + + } else if (narg && (strcmp(arg[0],"exclude") == 0)) { + newvalue = 0; + + } else if (narg) error->all(FLERR,"Illegal pair_style command"); + + if (narg == 0) return; + + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); + + // toggle components to include or exclude + + for (int iarg = 1; iarg < narg; iarg++) { + if (strcmp(arg[iarg],"hal") == 0) hal_flag = newvalue; + else if (strcmp(arg[iarg],"repulse") == 0) repulse_flag = newvalue; + else if (strcmp(arg[iarg],"qxfer") == 0) qxfer_flag = newvalue; + else if (strcmp(arg[iarg],"disp") == 0) + disp_rspace_flag = disp_kspace_flag = newvalue; + else if (strcmp(arg[iarg],"disp/rspace") == 0) disp_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"disp/kspace") == 0) disp_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"polar") == 0) + polar_rspace_flag = polar_kspace_flag = newvalue; + else if (strcmp(arg[iarg],"polar/rspace") == 0) polar_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"polar/kspace") == 0) polar_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"mpole") == 0) + mpole_rspace_flag = mpole_kspace_flag = newvalue; + else if (strcmp(arg[iarg],"mpole/rspace") == 0) mpole_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"mpole/kspace") == 0) mpole_rspace_flag = newvalue; + else if (strcmp(arg[iarg],"bond") == 0) bond_flag = newvalue; + else if (strcmp(arg[iarg],"angle") == 0) angle_flag = newvalue; + else if (strcmp(arg[iarg],"dihedral") == 0) dihedral_flag = newvalue; + else if (strcmp(arg[iarg],"improper") == 0) improper_flag = newvalue; + else if (strcmp(arg[iarg],"urey") == 0) urey_flag = newvalue; + else if (strcmp(arg[iarg],"pitorsion") == 0) pitorsion_flag = newvalue; + else if (strcmp(arg[iarg],"bitorsion") == 0) bitorsion_flag = newvalue; else error->all(FLERR,"Illegal pair_style command"); - iarg++; } } @@ -677,14 +697,9 @@ void PairAmoeba::init_style() //if (!force->special_onefive) // error->all(FLERR,"Pair style amoeba/hippo requires special_bonds one/five be set"); - // b/c induce computes fopt,foptp used by polar - - if (kspace_flag && optorder && polar_flag && !induce_flag) - error->all(FLERR,"Pair amoeba with optorder requires induce and polar together"); - // b/c polar uses mutipole virial terms - if (kspace_flag && apewald == aeewald && polar_flag && !mpole_flag) + if (apewald == aeewald && polar_kspace_flag && !mpole_kspace_flag) error->all(FLERR, "Pair amoeba with apewald = aeewald requires mpole and polar together"); @@ -719,19 +734,6 @@ void PairAmoeba::init_style() if (index_pval < 0 || !flag || cols) error->all(FLERR,"Pair amoeba pval is not defined"); - // check for fix store/state commands that stores force components - - ifhal = modify->find_fix("fhal"); - ifrepulse = modify->find_fix("frepulse"); - ifdisp = modify->find_fix("fdisp"); - ifpolar = modify->find_fix("fpolar"); - ifmpole = modify->find_fix("fmpole"); - ifqxfer = modify->find_fix("fqxfer"); - - if (ifhal < 0 || ifrepulse < 0 || ifdisp < 0 || - ifpolar < 0 || ifmpole < 0 || ifqxfer < 0) - error->all(FLERR,"Pair amoeba fix store/state commands not defined"); - // ------------------------------------------------------------------- // one-time initializations // can't do earlier b/c need all atoms to exist @@ -982,7 +984,7 @@ void PairAmoeba::init_style() if (me == 0) { char fname[32]; sprintf(fname,"tmp.uind.kspace.%d",nprocs); - if (uind_flag) fp_uind = fopen(fname,"w"); + if (UIND_DEBUG) fp_uind = fopen(fname,"w"); } } @@ -993,32 +995,41 @@ void PairAmoeba::init_style() void PairAmoeba::print_settings(FILE *fp) { fprintf(fp,"AMOEBA/HIPPO force field settings\n"); - choose(VDWL); - fprintf(fp," vdwl: cut %g taper %g vscale %g %g %g %g\n", - sqrt(off2),sqrt(cut2), - special_hal[1],special_hal[2],special_hal[3],special_hal[4]); + + if (amoeba) { + choose(HAL); + fprintf(fp," hal: cut %g taper %g vscale %g %g %g %g\n", + sqrt(off2),sqrt(cut2), + special_hal[1],special_hal[2],special_hal[3],special_hal[4]); + } + + if (hippo) { + choose(REPULSE); + fprintf(fp," repulsion: cut %g taper %g rscale %g %g %g %g\n", + sqrt(off2),sqrt(cut2), + special_repel[1],special_repel[2],special_repel[3],special_repel[4]); + } - choose(REPULSE); - fprintf(fp," repulsion: cut %g taper %g rscale %g %g %g %g\n", - sqrt(off2),sqrt(cut2), - special_repel[1],special_repel[2],special_repel[3],special_repel[4]); + if (hippo) { + choose(QFER); + fprintf(fp," qxfer: cut %g taper %g mscale %g %g %g %g\n", + sqrt(off2),sqrt(cut2), + special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); + } - choose(QFER); - fprintf(fp," qxfer: cut %g taper %g mscale %g %g %g %g\n", - sqrt(off2),sqrt(cut2), - special_mpole[1],special_mpole[2],special_mpole[3],special_mpole[4]); - - if (use_dewald) { - choose(DISP_LONG); - fprintf(fp," dispersion: cut %g aewald %g bsorder %d " - "FFT %d %d %d dspscale %g %g %g %g\n", - sqrt(off2),aewald,bsdorder,ndfft1,ndfft2,ndfft3, - special_disp[1],special_disp[2],special_disp[3],special_disp[4]); - } else { - choose(DISP); - fprintf(fp," dispersion: cut %g aewald %g dspscale %g %g %g %g\n", - sqrt(off2),aewald, - special_disp[1],special_disp[2],special_disp[3],special_disp[4]); + if (hippo) { + if (use_dewald) { + choose(DISP_LONG); + fprintf(fp," dispersion: cut %g aewald %g bsorder %d " + "FFT %d %d %d dspscale %g %g %g %g\n", + sqrt(off2),aewald,bsdorder,ndfft1,ndfft2,ndfft3, + special_disp[1],special_disp[2],special_disp[3],special_disp[4]); + } else { + choose(DISP); + fprintf(fp," dispersion: cut %g aewald %g dspscale %g %g %g %g\n", + sqrt(off2),aewald, + special_disp[1],special_disp[2],special_disp[3],special_disp[4]); + } } if (use_ewald) { @@ -1073,35 +1084,31 @@ double PairAmoeba::init_one(int i, int j) { double cutoff = 0.0; - if (hal_flag) { - choose(VDWL); + if (amoeba) { + choose(HAL); cutoff = MAX(cutoff,sqrt(off2)); } - if (repulse_flag) { + + if (hippo) { choose(REPULSE); cutoff = MAX(cutoff,sqrt(off2)); } - if (disp_flag) { + + if (hippo) { if (use_dewald) choose(DISP_LONG); else choose(DISP); cutoff = MAX(cutoff,sqrt(off2)); } - if (mpole_flag) { - if (use_ewald) choose(MPOLE_LONG); - else choose(MPOLE); - cutoff = MAX(cutoff,sqrt(off2)); - } - if (induce_flag) { - if (use_ewald) choose(POLAR_LONG); - else choose(POLAR); - cutoff = MAX(cutoff,sqrt(off2)); - } - if (polar_flag) { - if (use_ewald) choose(POLAR_LONG); - else choose(POLAR); - cutoff = MAX(cutoff,sqrt(off2)); - } - if (qxfer_flag) { + + if (use_ewald) choose(MPOLE_LONG); + else choose(MPOLE); + cutoff = MAX(cutoff,sqrt(off2)); + + if (use_ewald) choose(POLAR_LONG); + else choose(POLAR); + cutoff = MAX(cutoff,sqrt(off2)); + + if (hippo) { choose(QFER); cutoff = MAX(cutoff,sqrt(off2)); } @@ -1927,7 +1934,7 @@ void PairAmoeba::choose(int which) // short-range only terms - if (which == VDWL) { + if (which == HAL) { off = vdwcut; cut = vdwtaper; } else if (which == REPULSE) { @@ -2075,39 +2082,24 @@ void PairAmoeba::mix() } } -/* ---------------------------------------------------------------------- - zero internal energy and virial terms -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -void PairAmoeba::zero_energy_force_virial() +void *PairAmoeba::extract(const char *str, int &dim) { - ehal = erepulse = edisp = epolar = empole = eqxfer = 0.0; + dim = 0; + if (strcmp(str,"bond_flag") == 0) return (void *) &bond_flag; + if (strcmp(str,"angle_flag") == 0) return (void *) &angle_flag; + if (strcmp(str,"dihedral_flag") == 0) return (void *) &dihedral_flag; + if (strcmp(str,"improper_flag") == 0) return (void *) &improper_flag; + if (strcmp(str,"urey_flag") == 0) return (void *) &urey_flag; + if (strcmp(str,"pitorsion_flag") == 0) return (void *) &pitorsion_flag; + if (strcmp(str,"bitorsion_flag") == 0) return (void *) &bitorsion_flag; - fhal = modify->fix[ifhal]->array_atom; - frepulse = modify->fix[ifrepulse]->array_atom; - fdisp = modify->fix[ifdisp]->array_atom; - fpolar = modify->fix[ifpolar]->array_atom; - fmpole = modify->fix[ifmpole]->array_atom; - fqxfer = modify->fix[ifqxfer]->array_atom; - - int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; - - memset(&fhal[0][0],0,3*nall*sizeof(double)); - memset(&frepulse[0][0],0,3*nall*sizeof(double)); - memset(&fdisp[0][0],0,3*nall*sizeof(double)); - memset(&fpolar[0][0],0,3*nall*sizeof(double)); - memset(&fmpole[0][0],0,3*nall*sizeof(double)); - memset(&fqxfer[0][0],0,3*nall*sizeof(double)); - - for (int i = 0; i < 6; i++) { - virhal[i] = 0.0; - virrepulse[i] = 0.0; - virdisp[i] = 0.0; - virpolar[i] = 0.0; - virmpole[i] = 0.0; - virqxfer[i] = 0.0; - } + if (strcmp(str,"opbend_cubic") == 0) return (void *) &opbend_cubic; + if (strcmp(str,"opbend_quartic") == 0) return (void *) &opbend_quartic; + if (strcmp(str,"opbend_pentic") == 0) return (void *) &opbend_pentic; + if (strcmp(str,"opbend_sextic") == 0) return (void *) &opbend_sextic; + return nullptr; } /* ---------------------------------------------------------------------- diff --git a/src/AMOEBA/pair_amoeba.h b/src/AMOEBA/pair_amoeba.h index 5ba7aae981..d87bcd2b1e 100644 --- a/src/AMOEBA/pair_amoeba.h +++ b/src/AMOEBA/pair_amoeba.h @@ -57,6 +57,8 @@ class PairAmoeba : public Pair { void pack_reverse_grid(int, void *, int, int *); void unpack_reverse_grid(int, void *, int, int *); + void *extract(const char *, int &); + protected: int me,nprocs; int nmax; // allocation for owned+ghost @@ -73,23 +75,21 @@ class PairAmoeba : public Pair { // turn on/off components of force field - int hal_flag,repulse_flag,disp_flag,induce_flag,polar_flag,mpole_flag,qxfer_flag; - int rspace_flag,kspace_flag; - - // DEBUG flags - - int uind_flag; + int hal_flag,repulse_flag,qxfer_flag; + int disp_rspace_flag,disp_kspace_flag; + int polar_rspace_flag,polar_kspace_flag; + int mpole_rspace_flag,mpole_kspace_flag; + int bond_flag,angle_flag,dihedral_flag,improper_flag; + int urey_flag,pitorsion_flag,bitorsion_flag; // DEBUG timers double time_init,time_hal,time_repulse,time_disp; double time_mpole,time_induce,time_polar,time_qxfer; - // energy, force, and virial components + // energy/virial components - int ifhal,ifrepulse,ifdisp,ifpolar,ifmpole,ifqxfer; double ehal,erepulse,edisp,epolar,empole,eqxfer; - double **fhal,**frepulse,**fdisp,**fpolar,**fmpole,**fqxfer; double virhal[6],virrepulse[6],virdisp[6],virpolar[6],virmpole[6],virqxfer[6]; // scalar values defined in force-field file diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index 1a4c525ac6..d056b2aea9 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -24,10 +24,10 @@ #include "neighbor.h" #include "comm.h" #include "force.h" +#include "pair.h" #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -53,6 +53,8 @@ BondClass2::~BondClass2() void BondClass2::compute(int eflag, int vflag) { + if (disable) return; + int i1,i2,n,type; double delx,dely,delz,ebond,fbond; double rsq,r,dr,dr2,dr3,dr4,de_bond; @@ -155,6 +157,22 @@ void BondClass2::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients"); } +/* ---------------------------------------------------------------------- */ + +void BondClass2::init_style() +{ + // check if PairAmoeba disabled bond terms + + Pair *pair = force->pair_match("amoeba",1,0); + + if (!pair) disable = 0; + else { + int tmp; + int flag = *((int *) pair->extract("bond_flag",tmp)); + disable = flag ? 0 : 1; + } +} + /* ---------------------------------------------------------------------- return an equilbrium bond length ------------------------------------------------------------------------- */ diff --git a/src/CLASS2/bond_class2.h b/src/CLASS2/bond_class2.h index 75c1d52c1f..d9f7cafedd 100644 --- a/src/CLASS2/bond_class2.h +++ b/src/CLASS2/bond_class2.h @@ -30,6 +30,7 @@ class BondClass2 : public Bond { virtual ~BondClass2(); virtual void compute(int, int); virtual void coeff(int, char **); + void init_style(); double equilibrium_distance(int); void write_restart(FILE *); virtual void read_restart(FILE *); @@ -39,6 +40,7 @@ class BondClass2 : public Bond { protected: double *r0, *k2, *k3, *k4; + int disable; void allocate(); }; diff --git a/src/EXTRA-MOLECULE/dihedral_fourier.cpp b/src/EXTRA-MOLECULE/dihedral_fourier.cpp index b88c866e7c..1dcbdf4563 100644 --- a/src/EXTRA-MOLECULE/dihedral_fourier.cpp +++ b/src/EXTRA-MOLECULE/dihedral_fourier.cpp @@ -24,12 +24,12 @@ #include "comm.h" #include "neighbor.h" #include "force.h" +#include "pair.h" #include "update.h" #include "math_const.h" #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; using namespace MathConst; @@ -70,6 +70,8 @@ DihedralFourier::~DihedralFourier() void DihedralFourier::compute(int eflag, int vflag) { + if (disable) return; + int i1,i2,i3,i4,i,j,m,n,type; double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; double edihedral,f1[3],f2[3],f3[3],f4[3]; @@ -327,13 +329,28 @@ void DihedralFourier::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); } +/* ---------------------------------------------------------------------- */ + +void DihedralFourier::init_style() +{ + // check if PairAmoeba disabled dihedral terms + + Pair *pair = force->pair_match("amoeba",1,0); + + if (!pair) disable = 0; + else { + int tmp; + int flag = *((int *) pair->extract("dihedral_flag",tmp)); + disable = flag ? 0 : 1; + } +} + /* ---------------------------------------------------------------------- proc 0 writes out coeffs to restart file ------------------------------------------------------------------------- */ void DihedralFourier::write_restart(FILE *fp) { - fwrite(&nterms[1],sizeof(int),atom->ndihedraltypes,fp); for (int i = 1; i <= atom->ndihedraltypes; i++) { fwrite(k[i],sizeof(double),nterms[i],fp); diff --git a/src/EXTRA-MOLECULE/dihedral_fourier.h b/src/EXTRA-MOLECULE/dihedral_fourier.h index 557d4b5277..208cf2099f 100644 --- a/src/EXTRA-MOLECULE/dihedral_fourier.h +++ b/src/EXTRA-MOLECULE/dihedral_fourier.h @@ -30,6 +30,7 @@ class DihedralFourier : public Dihedral { virtual ~DihedralFourier(); virtual void compute(int, int); void coeff(int, char **); + void init_style(); void write_restart(FILE *); void read_restart(FILE *); void write_data(FILE *); @@ -39,6 +40,7 @@ class DihedralFourier : public Dihedral { int **multiplicity; int *nterms; int implicit, weightflag; + int disable; void allocate(); }; diff --git a/src/angle.cpp b/src/angle.cpp index b3b8066a03..4a67d0b202 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -179,6 +179,7 @@ void Angle::ev_setup(int eflag, int vflag, int alloc) /* ---------------------------------------------------------------------- tally energy and virial into global and per-atom accumulators virial = r1F1 + r2F2 + r3F3 = (r1-r2) F1 + (r3-r2) F3 = del1*f1 + del2*f3 + called by standard 3-body angles ------------------------------------------------------------------------- */ void Angle::ev_tally(int i, int j, int k, int nlocal, int newton_bond, @@ -341,6 +342,7 @@ void Angle::ev_tally(int i, int j, int k, int nlocal, int newton_bond, /* ---------------------------------------------------------------------- tally energy and virial into global and per-atom accumulators virial = r1F1 + r2F2 + r3F3 + r4F4 + called by AngleAmoeba for its 4-body angle term ------------------------------------------------------------------------- */ void Angle::ev_tally4(int i, int j, int k, int m, int nlocal, int newton_bond, @@ -437,6 +439,92 @@ void Angle::ev_tally4(int i, int j, int k, int m, int nlocal, int newton_bond, } } + +/* ---------------------------------------------------------------------- + tally energy and virial into global and per-atom accumulators + called by AngleAmoeba for its 2-body Urey-Bradley H-H bond term + identical to Bond:ev_tally() +------------------------------------------------------------------------- */ + +void Angle::ev_tally2(int i, int j, int nlocal, int newton_bond, + double ebond, double fbond, + double delx, double dely, double delz) +{ + double ebondhalf,v[6]; + + if (eflag_either) { + if (eflag_global) { + if (newton_bond) energy += ebond; + else { + ebondhalf = 0.5*ebond; + if (i < nlocal) energy += ebondhalf; + if (j < nlocal) energy += ebondhalf; + } + } + if (eflag_atom) { + ebondhalf = 0.5*ebond; + if (newton_bond || i < nlocal) eatom[i] += ebondhalf; + if (newton_bond || j < nlocal) eatom[j] += ebondhalf; + } + } + + if (vflag_either) { + v[0] = delx*delx*fbond; + v[1] = dely*dely*fbond; + v[2] = delz*delz*fbond; + v[3] = delx*dely*fbond; + v[4] = delx*delz*fbond; + v[5] = dely*delz*fbond; + + if (vflag_global) { + if (newton_bond) { + virial[0] += v[0]; + virial[1] += v[1]; + virial[2] += v[2]; + virial[3] += v[3]; + virial[4] += v[4]; + virial[5] += v[5]; + } else { + if (i < nlocal) { + virial[0] += 0.5*v[0]; + virial[1] += 0.5*v[1]; + virial[2] += 0.5*v[2]; + virial[3] += 0.5*v[3]; + virial[4] += 0.5*v[4]; + virial[5] += 0.5*v[5]; + } + if (j < nlocal) { + virial[0] += 0.5*v[0]; + virial[1] += 0.5*v[1]; + virial[2] += 0.5*v[2]; + virial[3] += 0.5*v[3]; + virial[4] += 0.5*v[4]; + virial[5] += 0.5*v[5]; + } + } + } + + if (vflag_atom) { + if (newton_bond || i < nlocal) { + vatom[i][0] += 0.5*v[0]; + vatom[i][1] += 0.5*v[1]; + vatom[i][2] += 0.5*v[2]; + vatom[i][3] += 0.5*v[3]; + vatom[i][4] += 0.5*v[4]; + vatom[i][5] += 0.5*v[5]; + } + if (newton_bond || j < nlocal) { + vatom[j][0] += 0.5*v[0]; + vatom[j][1] += 0.5*v[1]; + vatom[j][2] += 0.5*v[2]; + vatom[j][3] += 0.5*v[3]; + vatom[j][4] += 0.5*v[4]; + vatom[j][5] += 0.5*v[5]; + } + } + } +} + /* ---------------------------------------------------------------------- */ double Angle::memory_usage() diff --git a/src/angle.h b/src/angle.h index 434986e042..001ee2d2bc 100644 --- a/src/angle.h +++ b/src/angle.h @@ -78,6 +78,7 @@ class Angle : protected Pointers { void ev_tally(int, int, int, int, int, double, double *, double *, double, double, double, double, double, double); void ev_tally4(int, int, int, int, int, int, double, double *, double *, double *, double *); + void ev_tally2(int, int, int, int, double, double, double, double, double); }; } // namespace LAMMPS_NS diff --git a/src/modify.cpp b/src/modify.cpp index eff6ea8337..3bb85d55f8 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -810,7 +810,8 @@ Fix *Modify::add_fix(int narg, char **arg, int trysuffix) const char *exceptions[] = {"GPU", "OMP", "INTEL", "property/atom", "cmap", "cmap3", "rx", - "deprecated", "STORE/KIM", nullptr}; + "deprecated", "STORE/KIM", "amoeba/pitorsion", "amoeba/bitorsion", + nullptr}; if (domain->box_exist == 0) { int m; diff --git a/src/read_data.cpp b/src/read_data.cpp index c33c65f676..25e2db39bf 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -658,6 +658,13 @@ void ReadData::command(int narg, char **arg) error->all(FLERR,"Must define angle_style before BondAngle Coeffs"); if (firstpass) anglecoeffs(2); else skip_lines(nangletypes); + } else if (strcmp(keyword,"UreyBradley Coeffs") == 0) { + if (atom->avec->angles_allow == 0) + error->all(FLERR,"Invalid data file section: UreyBradley Coeffs"); + if (force->angle == nullptr) + error->all(FLERR,"Must define angle_style before UreyBradley Coeffs"); + if (firstpass) anglecoeffs(3); + else skip_lines(nangletypes); } else if (strcmp(keyword,"MiddleBondTorsion Coeffs") == 0) { if (atom->avec->dihedrals_allow == 0) @@ -722,7 +729,6 @@ void ReadData::command(int narg, char **arg) if (firstpass) fix(fix_index[i],keyword); else skip_lines(modify->fix[fix_index[i]]-> read_data_skip_lines(keyword)); - parse_keyword(0); break; } if (i == nfix) @@ -1852,6 +1858,7 @@ void ReadData::anglecoeffs(int which) if (which == 0) parse_coeffs(buf,nullptr,0,1,aoffset); else if (which == 1) parse_coeffs(buf,"bb",0,1,aoffset); else if (which == 2) parse_coeffs(buf,"ba",0,1,aoffset); + else if (which == 3) parse_coeffs(buf,"ub",0,1,aoffset); if (ncoeffarg == 0) error->all(FLERR,"Unexpected empty line in AngleCoeffs section"); force->angle->coeff(ncoeffarg,coeffarg); buf = next + 1; diff --git a/tools/tinker/data.py b/tools/tinker/data.py new file mode 100644 index 0000000000..40d6582814 --- /dev/null +++ b/tools/tinker/data.py @@ -0,0 +1,402 @@ +# Pizza.py toolkit, www.cs.sandia.gov/~sjplimp/pizza.html +# Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories +# +# Copyright (2005) Sandia Corporation. Under the terms of Contract +# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains +# certain rights in this software. This software is distributed under +# the GNU General Public License. + +# data tool + +oneline = "Read, write, manipulate LAMMPS data files" + +docstr = """ +d = data("data.poly") read a LAMMPS data file, can be gzipped +d = data() create an empty data file + +d.map(1,"id",3,"x") assign names to atom columns (1-N) + +coeffs = d.get("Pair Coeffs") extract info from data file section +q = d.get("Atoms",4) + + 1 arg = all columns returned as 2d array of floats + 2 args = Nth column returned as vector of floats + +d.reorder("Atoms",1,3,2,4,5) reorder columns (1-N) in a data file section + + 1,3,2,4,5 = new order of previous columns, can delete columns this way + +d.title = "My LAMMPS data file" set title of the data file +d.headers["atoms"] = 1500 set a header value +d.sections["Bonds"] = lines set a section to list of lines (with newlines) +d.delete("bonds") delete a keyword or section of data file +d.delete("Bonds") +d.replace("Atoms",5,vec) replace Nth column of section with vector +d.newxyz(dmp,1000) replace xyz in Atoms with xyz of snapshot N + + newxyz assumes id,x,y,z are defined in both data and dump files + also replaces ix,iy,iz if they are defined + +index,time,flag = d.iterator(0/1) loop over single data file snapshot +time,box,atoms,bonds,tris,lines = d.viz(index) return list of viz objects + + iterator() and viz() are compatible with equivalent dump calls + iterator() called with arg = 0 first time, with arg = 1 on subsequent calls + index = timestep index within dump object (only 0 for data file) + time = timestep value (only 0 for data file) + flag = -1 when iteration is done, 1 otherwise + viz() returns info for specified timestep index (must be 0) + time = 0 + box = [xlo,ylo,zlo,xhi,yhi,zhi] + atoms = id,type,x,y,z for each atom as 2d array + bonds = id,type,x1,y1,z1,x2,y2,z2,t1,t2 for each bond as 2d array + NULL if bonds do not exist + tris = NULL + lines = NULL + +d.write("data.new") write a LAMMPS data file +""" + +# History +# 8/05, Steve Plimpton (SNL): original version +# 11/07, added triclinic box support + +# ToDo list + +# Variables +# title = 1st line of data file +# names = dictionary with atom attributes as keys, col #s as values +# headers = dictionary with header name as key, value or tuple as values +# sections = dictionary with section name as key, array of lines as values +# nselect = 1 = # of snapshots + +# Imports and external programs + +from os import popen + +try: tmp = PIZZA_GUNZIP +except: PIZZA_GUNZIP = "gunzip" + +# Class definition + +class data: + + # -------------------------------------------------------------------- + + def __init__(self,*list): + self.nselect = 1 + + if len(list) == 0: + self.title = "LAMMPS data file" + self.names = {} + self.headers = {} + self.sections = {} + return + + file = list[0] + if file[-3:] == ".gz": f = popen("%s -c %s" % (PIZZA_GUNZIP,file),'r') + else: f = open(file) + + self.title = f.readline() + self.names = {} + + headers = {} + while 1: + line = f.readline() + line = line.strip() + if len(line) == 0: + continue + found = 0 + for keyword in hkeywords: + if line.find(keyword) >= 0: + found = 1 + words = line.split() + if keyword == "xlo xhi" or keyword == "ylo yhi" or \ + keyword == "zlo zhi": + headers[keyword] = (float(words[0]),float(words[1])) + elif keyword == "xy xz yz": + headers[keyword] = \ + (float(words[0]),float(words[1]),float(words[2])) + else: + headers[keyword] = int(words[0]) + if not found: + break + + sections = {} + while 1: + found = 0 + for pair in skeywords: + keyword,length = pair[0],pair[1] + if keyword == line: + found = 1 + if not headers.has_key(length): + raise StandardError, \ + "data section %s has no matching header value" % line + f.readline() + list = [] + for i in xrange(headers[length]): list.append(f.readline()) + sections[keyword] = list + if not found: + raise StandardError,"invalid section %s in data file" % line + f.readline() + line = f.readline() + if not line: + break + line = line.strip() + + f.close() + self.headers = headers + self.sections = sections + + # -------------------------------------------------------------------- + # assign names to atom columns + + def map(self,*pairs): + if len(pairs) % 2 != 0: + raise StandardError, "data map() requires pairs of mappings" + for i in range(0,len(pairs),2): + j = i + 1 + self.names[pairs[j]] = pairs[i]-1 + + # -------------------------------------------------------------------- + # extract info from data file fields + + def get(self,*list): + if len(list) == 1: + field = list[0] + array = [] + lines = self.sections[field] + for line in lines: + words = line.split() + values = map(float,words) + array.append(values) + return array + elif len(list) == 2: + field = list[0] + n = list[1] - 1 + vec = [] + lines = self.sections[field] + for line in lines: + words = line.split() + vec.append(float(words[n])) + return vec + else: + raise StandardError, "invalid arguments for data.get()" + + # -------------------------------------------------------------------- + # reorder columns in a data file field + + def reorder(self,name,*order): + n = len(order) + natoms = len(self.sections[name]) + oldlines = self.sections[name] + newlines = natoms*[""] + for index in order: + for i in xrange(len(newlines)): + words = oldlines[i].split() + newlines[i] += words[index-1] + " " + for i in xrange(len(newlines)): + newlines[i] += "\n" + self.sections[name] = newlines + + # -------------------------------------------------------------------- + # replace a column of named section with vector of values + + def replace(self,name,icol,vector): + lines = self.sections[name] + newlines = [] + j = icol - 1 + for i in xrange(len(lines)): + line = lines[i] + words = line.split() + words[j] = str(vector[i]) + newline = ' '.join(words) + '\n' + newlines.append(newline) + self.sections[name] = newlines + + # -------------------------------------------------------------------- + # replace x,y,z in Atoms with x,y,z values from snapshot ntime of dump object + # assumes id,x,y,z are defined in both data and dump files + # also replaces ix,iy,iz if they are defined + + def newxyz(self,dm,ntime): + nsnap = dm.findtime(ntime) + + dm.sort(ntime) + x,y,z = dm.vecs(ntime,"x","y","z") + + self.replace("Atoms",self.names['x']+1,x) + self.replace("Atoms",self.names['y']+1,y) + self.replace("Atoms",self.names['z']+1,z) + + if dm.names.has_key("ix") and self.names.has_key("ix"): + ix,iy,iz = dm.vecs(ntime,"ix","iy","iz") + self.replace("Atoms",self.names['ix']+1,ix) + self.replace("Atoms",self.names['iy']+1,iy) + self.replace("Atoms",self.names['iz']+1,iz) + + # -------------------------------------------------------------------- + # delete header value or section from data file + + def delete(self,keyword): + + if self.headers.has_key(keyword): del self.headers[keyword] + elif self.sections.has_key(keyword): del self.sections[keyword] + else: raise StandardError, "keyword not found in data object" + + # -------------------------------------------------------------------- + # write out a LAMMPS data file + + def write(self,file): + f = open(file,"w") + print >>f,self.title + + # write any keywords in standard list hkeywords + # in the order they are in hkeywords + # then write any extra keywords at end of header section + + for keyword in hkeywords: + if self.headers.has_key(keyword): + if keyword == "xlo xhi" or keyword == "ylo yhi" or \ + keyword == "zlo zhi": + pair = self.headers[keyword] + print >>f,pair[0],pair[1],keyword + elif keyword == "xy xz yz": + triple = self.headers[keyword] + print >>f,triple[0],triple[1],triple[2],keyword + else: + print >>f,self.headers[keyword],keyword + + for keyword in self.headers.keys(): + if keyword not in hkeywords: + print >>f,self.headers[keyword],keyword + + # write any sections in standard list skeywords + # in the order they are in skeywords + # then write any extra sections at end of file + + for pair in skeywords: + keyword = pair[0] + if self.sections.has_key(keyword): + print >>f,"\n%s\n" % keyword + for line in self.sections[keyword]: + print >>f,line, + + skeyfirst = [pair[0] for pair in skeywords] + + for keyword in self.sections.keys(): + if keyword not in skeyfirst: + print >>f,"\n%s\n" % keyword + for line in self.sections[keyword]: + print >>f,line, + + f.close() + + # -------------------------------------------------------------------- + # iterator called from other tools + + def iterator(self,flag): + if flag == 0: return 0,0,1 + return 0,0,-1 + + # -------------------------------------------------------------------- + # time query from other tools + + def findtime(self,n): + if n == 0: return 0 + raise StandardError, "no step %d exists" % (n) + + # -------------------------------------------------------------------- + # return list of atoms and bonds to viz for data object + + def viz(self,isnap): + if isnap: raise StandardError, "cannot call data.viz() with isnap != 0" + + id = self.names["id"] + type = self.names["type"] + x = self.names["x"] + y = self.names["y"] + z = self.names["z"] + + xlohi = self.headers["xlo xhi"] + ylohi = self.headers["ylo yhi"] + zlohi = self.headers["zlo zhi"] + box = [xlohi[0],ylohi[0],zlohi[0],xlohi[1],ylohi[1],zlohi[1]] + + # create atom list needed by viz from id,type,x,y,z + + atoms = [] + atomlines = self.sections["Atoms"] + for line in atomlines: + words = line.split() + atoms.append([int(words[id]),int(words[type]), + float(words[x]),float(words[y]),float(words[z])]) + + # create list of current bond coords from list of bonds + # assumes atoms are sorted so can lookup up the 2 atoms in each bond + + bonds = [] + if self.sections.has_key("Bonds"): + bondlines = self.sections["Bonds"] + for line in bondlines: + words = line.split() + bid,btype = int(words[0]),int(words[1]) + atom1,atom2 = int(words[2]),int(words[3]) + atom1words = atomlines[atom1-1].split() + atom2words = atomlines[atom2-1].split() + bonds.append([bid,btype, + float(atom1words[x]),float(atom1words[y]), + float(atom1words[z]), + float(atom2words[x]),float(atom2words[y]), + float(atom2words[z]), + float(atom1words[type]),float(atom2words[type])]) + + tris = [] + lines = [] + return 0,box,atoms,bonds,tris,lines + + # -------------------------------------------------------------------- + # return box size + + def maxbox(self): + xlohi = self.headers["xlo xhi"] + ylohi = self.headers["ylo yhi"] + zlohi = self.headers["zlo zhi"] + return [xlohi[0],ylohi[0],zlohi[0],xlohi[1],ylohi[1],zlohi[1]] + + # -------------------------------------------------------------------- + # return number of atom types + + def maxtype(self): + return self.headers["atom types"] + +# -------------------------------------------------------------------- +# standard data file keywords, both header and main sections + +hkeywords = ["atoms","ellipsoids","lines","triangles","bodies", + "bonds","angles","dihedrals","impropers", + "atom types","bond types","angle types","dihedral types", + "improper types", + "xlo xhi","ylo yhi","zlo zhi","xy xz yz"] + +skeywords = [["Masses","atom types"], + ["Atoms","atoms"],["Ellipsoids","ellipsoids"], + ["Lines","lines"],["Triangles","triangles"],["Bodies","bodies"], + ["Velocities","atoms"], + ["Bonds","bonds"], + ["Angles","angles"], + ["Dihedrals","dihedrals"], + ["Impropers","impropers"], + ["Pair Coeffs","atom types"], + ["Bond Coeffs","bond types"], + ["Angle Coeffs","angle types"], + ["Dihedral Coeffs","dihedral types"], + ["Improper Coeffs","improper types"], + ["BondBond Coeffs","angle types"], + ["BondAngle Coeffs","angle types"], + ["MiddleBondTorsion Coeffs","dihedral types"], + ["EndBondTorsion Coeffs","dihedral types"], + ["AngleTorsion Coeffs","dihedral types"], + ["AngleAngleTorsion Coeffs","dihedral types"], + ["BondBond13 Coeffs","dihedral types"], + ["AngleAngle Coeffs","improper types"]] diff --git a/tools/tinker2lmp.py b/tools/tinker/tinker2lmp.py similarity index 53% rename from tools/tinker2lmp.py rename to tools/tinker/tinker2lmp.py index 9b4aec3a5f..fec9f8a506 100644 --- a/tools/tinker2lmp.py +++ b/tools/tinker/tinker2lmp.py @@ -7,12 +7,13 @@ # -amoeba file = AMOEBA PRM force field file name (required, or hippo) # -hippo file = HIPPO PRM force field file name (required, or amoeba) # -data file = LAMMPS data file to output (required) +# -bitorsion file = LAMMPS fix bitorsion file to output (required if BiTorsions) # -nopbc = non-periodic system (default) # -pbc xhi yhi zhi = periodic system from 0 to hi in each dimension (optional) +# Author: Steve Plimpton + import sys,os,math -path = os.environ["LAMMPS_PYTHON_TOOLS"] -sys.path.append(path) from data import data BIG = 1.0e20 @@ -31,10 +32,11 @@ def error(txt=""): print " -amoeba file" print " -hippo file" print " -data file" + print " -bitorsion file" print " -nopbc" print " -pbc xhi yhi zhi" else: print "ERROR:",txt - sys.exit() + #sys.exit() # read and store values from a Tinker xyz file @@ -105,8 +107,22 @@ class PRMfile: self.angleparams = self.angles() self.bondangleparams = self.bondangles() self.torsionparams = self.torsions() + self.opbendparams = self.opbend() + self.ureyparams = self.ureybonds() + self.pitorsionparams = self.pitorsions() + self.bitorsionparams = self.bitorsions() self.ntypes = len(self.masses) + # find a section in the PRM file + + def find_section(self,txt): + txt = "## %s ##" % txt + for iline,line in enumerate(self.lines): + if txt in line: return iline + return -1 + + # scalar params + def force_field_definition(self): iline = self.find_section("Force Field Definition") iline += 3 @@ -121,7 +137,9 @@ class PRMfile: elif words[0] == "angle-pentic": self.angle_pentic = float(words[1]) elif words[0] == "angle-sextic": self.angle_sextic = float(words[1]) iline += 1 - + + # atom classes and masses + def peratom(self): classes = [] masses = [] @@ -139,6 +157,8 @@ class PRMfile: iline += 1 return classes,masses + # polarization groups + def polarize(self): polgroup = [] iline = self.find_section("Dipole Polarizability Parameters") @@ -189,6 +209,7 @@ class PRMfile: def angles(self): r2d = 180.0 / math.pi + ubflag = 0 params = [] iline = self.find_section("Angle Bending Parameters") if iline < 0: return params @@ -219,17 +240,17 @@ class PRMfile: lmp5 = self.angle_pentic * value1 * r2d*r2d*r2d lmp6 = self.angle_sextic * value1 * r2d*r2d*r2d*r2d - option1 = (pflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) + option1 = (pflag,ubflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) if len(words) >= 7: value3 = float(words[6]) lmp1 = value3 - option2 = (pflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) + option2 = (pflag,ubflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) if len(words) == 8: value4 = float(words[7]) lmp1 = value4 - option3 = (pflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) + option3 = (pflag,ubflag,lmp1,lmp2,lmp3,lmp4,lmp5,lmp6) if not option2 and not option3: params.append((class1,class2,class3,[option1])) @@ -248,14 +269,14 @@ class PRMfile: def bondangles(self): params = [] - iline = self.find_section("Stretch Bend Parameters") + iline = self.find_section("Stretch-Bend Parameters") if iline < 0: return params iline += 3 bdict = {} - for m,params in enumerate(self.bondparams): - bdict[(params[0],params[1])] = params[2] - + for m,bparams in enumerate(self.bondparams): + bdict[(bparams[0],bparams[1])] = bparams[2] + while iline < self.nlines: words = self.lines[iline].split() if len(words): @@ -268,18 +289,33 @@ class PRMfile: value2 = float(words[5]) lmp1 = value1 lmp2 = value2 - lmp3 = lmp4 = 0.0 - if (class2,class1) in bdict: lmp3 = bdict[(class2,class1)] - if (class1,class2) in bdict: lmp3 = bdict[(class1,class2)] - if (class2,class3) in bdict: lmp4 = bdict[(class2,class3)] - if (class3,class2) in bdict: lmp4 = bdict[(class3,class2)] - if lmp3 == 0.0 or lmp4 == 0.0: - print "Bond in BondAngle term not found",class1,class2,class3 - sys.exit() + + if (class1,class2) in bdict: + lmp3 = bdict[(class1,class2)] + elif (class2,class1) in bdict: + lmp3 = bdict[(class2,class1)] + else: + error("1st bond in BondAngle term not found: %d %d %d" % \ + (class1,class2,class3)) + # NOTE: just for debugging + lmp3 = 0.0 + + if (class2,class3) in bdict: + lmp4 = bdict[(class2,class3)] + elif (class3,class2) in bdict: + lmp4 = bdict[(class3,class2)] + else: + error("2nd bond in BondAngle term not found: %d %d %d" % \ + (class1,class2,class3)) + # NOTE: just for debugging + lmp4 = 0.0 + params.append((class1,class2,class3,lmp1,lmp2,lmp3,lmp4)) iline += 1 return params + # dihedral interactions + def torsions(self): params = [] iline = self.find_section("Torsional Parameters") @@ -294,26 +330,136 @@ class PRMfile: class2 = int(words[2]) class3 = int(words[3]) class4 = int(words[4]) - value1 = words[5] - value2 = words[6] - value3 = words[7] - value4 = words[8] - value5 = words[9] - value6 = words[10] - value7 = words[11] - value8 = words[12] - value9 = words[13] - params.append((class1,class2,class3,class4, - value1,value2,value3,value4,value5, - value6,value7,value8,value9)) + + if len(words) <= 5: + error("torsion has no params: %d %d %d %d" % \ + (class1,class2,class3,class4)) + if (len(words)-5) % 3: + error("torsion does not have triplets of params: %d %d %d %d" % \ + (class1,class2,class3,class4)) + + mfourier = (len(words)-5) / 3 + oneparams = [class1,class2,class3,class4,mfourier] + + for iset in range(mfourier): + value1 = float(words[5 + iset*3 + 0]) + value2 = float(words[5 + iset*3 + 1]) + value3 = int(words[5 + iset*3 + 2]) + lmp1 = value1/2.0 + lmp2 = value3 + lmp3 = value2 + oneparams += [lmp1,lmp2,lmp3] + + params.append(oneparams) + iline += 1 + return params + + # improper or out-of-plane bend interactions + + def opbend(self): + params = [] + iline = self.find_section("Out-of-Plane Bend Parameters") + if iline < 0: return params + iline += 3 + while iline < self.nlines: + words = self.lines[iline].split() + if len(words): + if words[0].startswith("###########"): break + if words[0] == "opbend": + class1 = int(words[1]) + class2 = int(words[2]) + class3 = int(words[3]) + class4 = int(words[4]) + value1 = float(words[5]) + lmp1 = value1 + params.append((class1,class2,class3,class4,lmp1)) iline += 1 return params - def find_section(self,txt): - txt = "## %s ##" % txt - for iline,line in enumerate(self.lines): - if txt in line: return iline - return -1 + # convert PRMfile params to LAMMPS angle_style amoeba UB params + # coeffs for K2,K3 = 0.0 since Urey-Bradley is simple harmonic + + def ureybonds(self): + params = [] + iline = self.find_section("Urey-Bradley Parameters") + if iline < 0: return params + iline += 3 + + while iline < self.nlines: + words = self.lines[iline].split() + if len(words): + if words[0].startswith("###########"): break + if words[0] == "ureybrad": + class1 = int(words[1]) + class2 = int(words[2]) + class3 = int(words[3]) + value1 = float(words[4]) + value2 = float(words[5]) + lmp1 = value1 + lmp2 = value2 + + params.append((class1,class2,class3,lmp1,lmp2)) + iline += 1 + return params + + # PiTorsion params, will be read from data file by fix pitorsion + + def pitorsions(self): + params = [] + iline = self.find_section("Pi-Torsion Parameters") + if iline < 0: return params + iline += 3 + + while iline < self.nlines: + words = self.lines[iline].split() + if len(words): + if words[0].startswith("###########"): break + if words[0] == "pitors": + class1 = int(words[1]) + class2 = int(words[2]) + value1 = float(words[3]) + lmp1 = value1 + + params.append((class1,class2,lmp1)) + iline += 1 + return params + + # BiTorsion params, will be read from data file by fix bitorsion + + def bitorsions(self): + params = [] + iline = self.find_section("Torsion-Torsion Parameters") + if iline < 0: return params + iline += 3 + + while iline < self.nlines: + words = self.lines[iline].split() + if len(words): + if words[0].startswith("###########"): break + if words[0] == "tortors": + class1 = int(words[1]) + class2 = int(words[2]) + class3 = int(words[3]) + class4 = int(words[4]) + class5 = int(words[5]) + nx = int(words[6]) + ny = int(words[7]) + iline += 1 + array = [] + for iy in range(ny): + xrow = [] + for ix in range(nx): + words = self.lines[iline].split() + xgrid = float(words[0]) + ygrid = float(words[1]) + value = float(words[2]) + tuple3 = (xgrid,ygrid,value) + xrow.append(tuple3) + iline += 1 + array.append(xrow) + params.append((class1,class2,class3,class4,class5,nx,ny,array)) + iline += 1 + return params # ---------------------------------------- # main program @@ -328,6 +474,7 @@ amoeba = hippo = 0 xyzfile = "" prmfile = "" datafile = "" +bitorsionfile = "" pbcflag = 0 iarg = 0 @@ -350,6 +497,10 @@ while iarg < narg: if iarg + 2 > narg: error() datafile = args[iarg+1] iarg += 2 + elif args[iarg] == "-bitorsion": + if iarg + 2 > narg: error() + bitorsionfile = args[iarg+1] + iarg += 2 elif args[iarg] == "-nopbc": pbcflag = 0 iarg += 1 @@ -455,7 +606,7 @@ for i in id: stack.append(k) # ---------------------------------------- -# create lists of bonds, angles, dihedrals +# create lists of bonds, angles, dihedrals, impropers # ---------------------------------------- # create blist = list of bonds @@ -493,13 +644,18 @@ for atom2 in id: # generate topology via triple loop over neighbors of dihedral atom2 # double loop over bonds of atom2 # additional loop over bonds of atom3 -# avoid double counting by requiring atom1 < atom3 +# avoid double counting the reverse dihedral by use of ddict dictionary + +# NOTE: could just avoid double count by "if atom1 < atom4" as in bond, angle ? +# gives different list, but is it still identical ? +# would have to check 2 data files, write comparison Py script id = xyz.id type = xyz.type bonds = xyz.bonds dlist = [] +ddict = {} for atom2 in id: for atom1 in bonds[atom2-1]: @@ -507,11 +663,125 @@ for atom2 in id: if atom3 == atom1: continue for atom4 in bonds[atom3-1]: if atom4 == atom2 or atom4 == atom1: continue - if atom1 < atom3: - dlist.append((atom1,atom2,atom3,atom4)) + if (atom4,atom3,atom2,atom1) in ddict: continue + dlist.append((atom1,atom2,atom3,atom4)) + ddict[(atom1,atom2,atom3,atom4)] = 1 + +# create olist = list of out-of-plane impropers +# generate topology by triple loop over bonds of center atom2 +# atom2 must have 3 or more bonds to be part of an improper +# avoid double counting by requiring atom3 < atom4 +# this is since in Tinker the final 2 atoms in the improper are interchangeable + +id = xyz.id +type = xyz.type +bonds = xyz.bonds + +olist = [] + +for atom2 in id: + if len(bonds[atom2-1]) < 3: continue + for atom1 in bonds[atom2-1]: + for atom3 in bonds[atom2-1]: + for atom4 in bonds[atom2-1]: + if atom1 == atom3: continue + if atom1 == atom4: continue + if atom3 >= atom4: continue + olist.append((atom1,atom2,atom3,atom4)) # ---------------------------------------- -# create lists of bond/angle/dihedral types +# create list of Urey-Bradley triplet matches +# ---------------------------------------- + +# scan list of angles to find triplets that match UB parameters +# if match, add it to UB bond list + +type = xyz.type +classes = prm.classes + +ublist = [] + +ubdict = {} +for m,params in enumerate(prm.ureyparams): + ubdict[(params[0],params[1],params[2])] = (m,params) + +for atom1,atom2,atom3 in alist: + type1 = type[atom1-1] + type2 = type[atom2-1] + type3 = type[atom3-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + c3 = classes[type3-1] + + if (c1,c2,c3) in ubdict: + ublist.append((atom1,atom2,atom3)) + elif (c3,c2,c1) in ubdict: + ublist.append((atom3,atom2,atom1)) + +# create pitorslist = list of 6-body interactions +# based on central bond, each bond atom is bonded to exactly 2 other atoms +# avoid double counting by requiring atom1 < atom2 +# NOTE: need more info on how to order the 6 atoms for Tinker to compute on + +type = xyz.type +classes = prm.classes +bonds = xyz.bonds + +pitorsionlist = [] + +for atom1 in id: + for atom2 in bonds[atom1-1]: + if atom1 < atom2: + if len(bonds[atom1-1]) != 3: continue + if len(bonds[atom2-1]) != 3: continue + + if bonds[atom1-1][0] == atom2: + atom3 = bonds[atom1-1][1] + atom4 = bonds[atom1-1][2] + elif bonds[atom1-1][1] == atom2: + atom3 = bonds[atom1-1][0] + atom4 = bonds[atom1-1][2] + elif bonds[atom1-1][2] == atom2: + atom3 = bonds[atom1-1][0] + atom4 = bonds[atom1-1][1] + + if bonds[atom2-1][0] == atom1: + atom5 = bonds[atom2-1][1] + atom6 = bonds[atom2-1][2] + elif bonds[atom2-1][1] == atom1: + atom5 = bonds[atom2-1][0] + atom6 = bonds[atom2-1][2] + elif bonds[atom2-1][2] == atom1: + atom5 = bonds[atom2-1][0] + atom6 = bonds[atom2-1][1] + + pitorsionlist.append((atom3,atom4,atom1,atom2,atom5,atom6)) + +# create bitorslist = list of 5-body interactions +# generate topology via double loop over neighbors of central atom3 +# additional double loop over bonds of atom2 and bonds of atom4 +# avoid double counting the reverse bitorsion by use of btdict dictionary + +type = xyz.type +classes = prm.classes +bonds = xyz.bonds + +bitorsionlist = [] +btdict = {} + +for atom3 in id: + for atom2 in bonds[atom3-1]: + for atom4 in bonds[atom3-1]: + if atom2 == atom4: continue + for atom1 in bonds[atom2-1]: + for atom5 in bonds[atom4-1]: + if atom1 == atom3 or atom5 == atom3 or atom1 == atom5: continue + if (atom5,atom4,atom3,atom2,atom1) in btdict: continue + bitorsionlist.append((atom1,atom2,atom3,atom4,atom5)) + btdict[(atom1,atom2,atom3,atom4,atom5)] = 1 + +# ---------------------------------------- +# create lists of bond/angle/dihedral/improper types # ---------------------------------------- # generate btype = LAMMPS type of each bond @@ -542,19 +812,16 @@ for atom1,atom2 in blist: if (c1,c2) in bdict: m,params = bdict[(c1,c2)] elif (c2,c1) in bdict: m,params = bdict[(c2,c1)] - else: - print "Bond not found",atom1,atom2,c1,c2 - sys.exit() + else: error("bond not found: %d %d: %d %d" % (atom1,atom2,c1,c2)) if not flags[m]: v1,v2,v3,v4 = params[2:] bparams.append((v1,v2,v3,v4)) flags[m] = len(bparams) btype.append(flags[m]) - + # generate atype = LAMMPS type of each angle # generate aparams = LAMMPS params for each angle type -# generate baparams = LAMMPS bond-angle params for each angle type # flags[i] = which LAMMPS angle type (1-N) the Tinker FF file angle I is # 0 = none # Tinker FF file angle entries can have 1, 2, or 3 options @@ -575,15 +842,11 @@ for m,params in enumerate(prm.angleparams): noptions += n flags = noptions*[0] -#baflags = len(baprm)*[0] atype = [] aparams = [] -baparams = [] -#DEBUG -opcount = 0 - -for atom1,atom2,atom3 in alist: +for i,one in enumerate(alist): + atom1,atom2,atom3 = one type1 = type[atom1-1] type2 = type[atom2-1] type3 = type[atom3-1] @@ -593,8 +856,19 @@ for atom1,atom2,atom3 in alist: if (c1,c2,c3) in adict or (c3,c2,c1) in adict: if (c1,c2,c3) in adict: m,params = adict[(c1,c2,c3)] - if (c3,c2,c1) in adict: m,params = adict[(c3,c2,c1)] + + # IMPORTANT subtlety + # flip order of 3 atoms in alist if the angle + # matches Angle Bending section of PRM file in reverse order + # necessary b/c BondAngle coeffs will be generated with r1,r2 params + # from Bond Stretching section of PRM file + # since in general r1 != r2, the LAMMPS AngleAmoeba class requires + # the 3 atoms in the angle be in the order that matches r1 and r2 + if (c3,c2,c1) in adict: + m,params = adict[(c3,c2,c1)] + alist[i] = (atom3,atom2,atom1) + # params is a sequence of 1 or 2 or 3 options # which = which of 1,2,3 options this atom triplet matches # for which = 2 or 3, increment m to index correct position in flags @@ -609,9 +883,6 @@ for atom1,atom2,atom3 in alist: # option 2 if one of 2 additional bonds is to an H atom # option 3 if both of 2 additional bonds is to an H atom - # DEBUG - debugflag = 0 - if len(params[3]) == 1: which = 1 @@ -624,7 +895,7 @@ for atom1,atom2,atom3 in alist: print " angle atom classes:",c1,c2,c3 print " Tinker FF file param options:",len(params[3]) print " Nbonds and hydrogen count:",nbonds,hcount - #sys.exit() // NOTE: allow this for now + #sys.exit() NOTE: allow this for now if hcount == 0: which = 1 elif hcount == 1: @@ -638,10 +909,6 @@ for atom1,atom2,atom3 in alist: print " Nbonds and hydrogen count:",nbonds,hcount print " which:",which,m - # DEBUG - debugflag = 1 - opcount += 1 - elif len(params[3]) == 3: nbonds,hcount = xyz.angle_hbond_count(atom1,atom2,atom3,lmptype,lmpmass) @@ -651,7 +918,7 @@ for atom1,atom2,atom3 in alist: print " angle atom classes:",c1,c2,c3 print " Tinker FF file param options:",len(params[3]) print " Nbonds and hydrogen count:",nbonds,hcount - #sys.exit() // NOTE: allow this for now + #sys.exit() NOTE: allow this for now if hcount == 0: which = 1 elif hcount == 1: @@ -661,56 +928,90 @@ for atom1,atom2,atom3 in alist: which = 3 m += 2 - print "4-bond angle" - print " angle atom IDs:",atom1,atom2,atom3 - print " angle atom classes:",c1,c2,c3 - print " Tinker FF file param options:",len(params[3]) - print " Nbonds and hydrogen count:",nbonds,hcount - print " which:",which,m - - # DEBUG - debugflag = 1 - opcount += 1 - else: - print "Angle not found",atom1,atom2,atom3,c1,c2,c3 - sys.exit() + error("angle not found: %d %d %d: %d %d %d" % (atom1,atom2,atom3,c1,c2,c3)) if not flags[m]: - pflag,v1,v2,v3,v4,v5,v6 = params[3][which-1] - # DEBUG single line - if debugflag: pflag = 2 - aparams.append((pflag,v1,v2,v3,v4,v5,v6)) + pflag,ubflag,v1,v2,v3,v4,v5,v6 = params[3][which-1] + aparams.append((pflag,ubflag,v1,v2,v3,v4,v5,v6)) flags[m] = len(aparams) atype.append(flags[m]) -print "OPTION angles",opcount +# augment the aparams with bond-angle cross terms from bondangleparams +# generate baparams = LAMMPS bond-angle params for each angle type +# badict = dictionary for angle tuples in bongangleparams - # NOTE: baparams may need to be flipped if match is 3,2,1 instead of 1,2,3 +badict = {} +for v1,v2,v3,v4,v5,v6,v7 in prm.bondangleparams: + if (v1,v2,v3) in badict: continue + badict[(v1,v2,v3)] = (v4,v5,v6,v7) + +baparams = [] + +for itype in range(len(aparams)): + iangle = atype.index(itype+1) + atom1,atom2,atom3 = alist[iangle] + type1 = type[atom1-1] + type2 = type[atom2-1] + type3 = type[atom3-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + c3 = classes[type3-1] + + if (c1,c2,c3) in badict: + n1,n2,r1,r2 = badict[(c1,c2,c3)] + elif (c3,c2,c1) in badict: + n1,n2,r1,r2 = badict[(c3,c2,c1)] + else: + print "Bond-stretch angle triplet not found: %d %d %d" % (c1,c2,c3) + n1,n2,r1,r2 = 4*[0.0] + + baparams.append((n1,n2,r1,r2)) + +# augment the aparams with Urey_Bradley terms from ureyparams +# generate ubparams = LAMMPS UB params for 1-3 bond in each angle type +# ubdict = dictionary for angle tuples in ureyparams + +ubdict = {} +for v1,v2,v3,v4,v5 in prm.ureyparams: + if (v1,v2,v3) in ubdict: continue + ubdict[(v1,v2,v3)] = (v4,v5) + +ubparams = [] + +for itype in range(len(aparams)): + iangle = atype.index(itype+1) + atom1,atom2,atom3 = alist[iangle] + type1 = type[atom1-1] + type2 = type[atom2-1] + type3 = type[atom3-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + c3 = classes[type3-1] + + # if UB settings exist for this angle type, set ubflag in aparams to 1 - # NOTE: mismatch between angle and bondangle params may not be handled right - # should be a new LAMMPS type if either angle or bondangle params do not match? - #for m,params in enumerate(baprm): - # c1,c2,c3,v1,v2,v3,v4 = params - # if (c1 == class1 and c2 == class2 and c3 == class3) or \ - # (c1 == class3 and c2 == class2 and c3 == class1): - # found += 1 - # if baflags[m]: - # continue - # #atype.append(baflags[m]) - # else: - # baparams.append((v1,v2,v3,v4)) - # baflags[m] = len(baparams) - # #atype.append(baflags[m]) - # break - # if found != 1: print "Not found",atom1,atom2,atom3,class1,class2,class3 + if (c1,c2,c3) in ubdict: + r1,r2 = ubdict[(c1,c2,c3)] + pflag,ubflag,v1,v2,v3,v4,v5,v6 = aparams[itype] + ubflag = 1 + aparams[itype] = (pflag,ubflag,v1,v2,v3,v4,v5,v6) + elif (c3,c2,c1) in ubdict: + r1,r2 = ubdict[(c3,c2,c1)] + pflag,ubflag,v1,v2,v3,v4,v5,v6 = aparams[itype] + ubflag = 1 + aparams[itype] = (pflag,ubflag,v1,v2,v3,v4,v5,v6) + else: + r1,r2 = 2*[0.0] + + ubparams.append((r1,r2)) # generate dtype = LAMMPS type of each dihedral # generate dparams = LAMMPS params for each dihedral type # flags[i] = which LAMMPS dihedral type (1-N) the Tinker FF file dihedral I is # 0 = none # convert prm.torsionparams to a dictionary for efficient searching -# key = (class1,class2) +# key = (class1,class2,class3,class4) # value = (M,params) where M is index into prm.torsionparams id = xyz.id @@ -738,15 +1039,159 @@ for atom1,atom2,atom3,atom4 in dlist: if (c1,c2,c3,c4) in ddict: m,params = ddict[(c1,c2,c3,c4)] elif (c4,c3,c2,c1) in ddict: m,params = ddict[(c4,c3,c2,c1)] else: - print "Dihedral not found",atom1,atom2,atom3,atom4,c1,c2,c3,c4 - sys.exit() + error("dihedral not found: %d %d %d %d: %d %d %d %d" % \ + (atom1,atom2,atom3,atom4,c1,c2,c3,c4)) if not flags[m]: - v1,v2,v3,v4,v5,v6,v7,v8,v9 = params[4:] - dparams.append((v1,v2,v3,v4,v5,v6,v7,v8,v9)) + oneparams = params[4:] + dparams.append(oneparams) flags[m] = len(dparams) dtype.append(flags[m]) +# generate otype = LAMMPS type of each out-of-plane improper +# generate oparams = LAMMPS params for each improper type +# flags[i] = which LAMMPS improper type (1-N) the Tinker FF file improper I is +# 0 = none +# convert prm.opbendparams to a dictionary for efficient searching +# key = (class1,class2) +# value = (M,params) where M is index into prm.opbendparams + +id = xyz.id +type = xyz.type +classes = prm.classes + +odict = {} +for m,params in enumerate(prm.opbendparams): + odict[(params[0],params[1])] = (m,params) + +flags = len(prm.opbendparams)*[0] +otype = [] +oparams = [] +olist_reduced = [] + +for atom1,atom2,atom3,atom4 in olist: + type1 = type[atom1-1] + type2 = type[atom2-1] + type3 = type[atom3-1] + type4 = type[atom4-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + c3 = classes[type3-1] + c4 = classes[type4-1] + + # 4-tuple is only an improper if matches an entry in PRM file + # olist_reduced = list of just these 4-tuples + + if (c1,c2) in odict: + m,params = odict[(c1,c2)] + olist_reduced.append((atom1,atom2,atom3,atom4)) + + if not flags[m]: + oneparams = params[4:] + oparams.append(oneparams) + flags[m] = len(oparams) + otype.append(flags[m]) + +# replace original olist with reduced version + +olist = olist_reduced + +# generate pitorsiontype = LAMMPS type of each pitorsion +# generate pitorsionparams = LAMMPS params for each pitorsion type +# flags[i] = which LAMMPS pitorsion type (1-N) the Ith Tinker PRM file ptors is +# 0 = none +# convert prm.pitorsionparams to a dictionary for efficient searching +# key = (class1,class2) +# value = (M,params) where M is index into prm.pitorsionparams + +id = xyz.id +type = xyz.type +classes = prm.classes + +pitdict = {} +for m,params in enumerate(prm.pitorsionparams): + pitdict[(params[0],params[1])] = (m,params) + +flags = len(prm.pitorsionparams)*[0] +pitorsiontype = [] +pitorsionparams = [] +pitorsionlist_reduced = [] + +for tmp1,tmp2,atom1,atom2,tmp3,tmp4 in pitorsionlist: + type1 = type[atom1-1] + type2 = type[atom2-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + + # 6-tuple is only a PiTorsion if central 2 atoms match an entry in PRM file + # pitorsionlist_reduced = list of just these 6-tuples + + if (c1,c2) in pitdict or (c2,c1) in pitdict: + if (c1,c2) in pitdict: m,params = pitdict[(c1,c2)] + else: m,params = pitdict[(c2,c1)] + pitorsionlist_reduced.append((tmp1,tmp2,atom1,atom2,tmp3,tmp4)) + + if not flags[m]: + v1 = params[2:] + pitorsionparams.append(v1) + flags[m] = len(pitorsionparams) + pitorsiontype.append(flags[m]) + +# replace original pitorsionlist with reduced version + +pitorsionlist = pitorsionlist_reduced + +# generate bitorsiontype = LAMMPS type of each bitorsion +# generate bitorsionparams = LAMMPS params for each bitorsion type +# flags[i] = which LAMMPS bitorsion type (1-N) the Ith Tinker PRM file btors is +# 0 = none +# convert prm.bitorsionparams to a dictionary for efficient searching +# key = (class1,class2,class3,class4,class5) +# value = (M,params) where M is index into prm.bitorsionparams + +id = xyz.id +type = xyz.type +classes = prm.classes + +bitdict = {} +for m,params in enumerate(prm.bitorsionparams): + bitdict[(params[0],params[1],params[2],params[3],params[4])] = (m,params) + +flags = len(prm.bitorsionparams)*[0] +bitorsiontype = [] +bitorsionparams = [] +bitorsionlist_reduced = [] + +for atom1,atom2,atom3,atom4,atom5 in bitorsionlist: + type1 = type[atom1-1] + type2 = type[atom2-1] + type3 = type[atom3-1] + type4 = type[atom4-1] + type5 = type[atom5-1] + c1 = classes[type1-1] + c2 = classes[type2-1] + c3 = classes[type3-1] + c4 = classes[type4-1] + c5 = classes[type5-1] + + # 5-tuple is only a BiTorsion if 5 atoms match an entry in PRM file + # bitorsionlist_reduced = list of just these 5-tuples + + if (c1,c2,c3,c4,c5) in bitdict or (c5,c4,c3,c2,c1) in bitdict: + if (c1,c2,c3,c4,c5) in bitdict: m,params = bitdict[(c1,c2,c3,c4,c5)] + else: m,params = bitdict[(c5,c4,c3,c2,c1)] + bitorsionlist_reduced.append((atom1,atom2,atom3,atom4,atom5)) + + if not flags[m]: + v1 = params[5:] + bitorsionparams.append(v1) + flags[m] = len(bitorsionparams) + bitorsiontype.append(flags[m]) + +# replace original bitorsionlist with reduced version + +bitorsionlist = bitorsionlist_reduced + # ---------------------------------------- # assign each atom to a Tinker group # NOTE: doing this inside LAMMPS now @@ -800,6 +1245,9 @@ ttype = xyz.type nbonds = len(blist) nangles = len(alist) ndihedrals = len(dlist) +nimpropers = len(olist) +npitorsions = len(pitorsionlist) +nbitorsions = len(bitorsionlist) # data file header values @@ -863,17 +1311,19 @@ if nangles: lines.append(line+'\n') d.sections["Angle Coeffs"] = lines - #lines = [] - #for i,one in enumerate(aparams): - # line = "%d %g %g %g" % (i+1,0.0,0.0,0.0) - # lines.append(line+'\n') - #d.sections["BondBond Coeffs"] = lines + lines = [] + for i,one in enumerate(baparams): + strone = [str(single) for single in one] + line = "%d %s" % (i+1,' '.join(strone)) + lines.append(line+'\n') + d.sections["BondAngle Coeffs"] = lines - #lines = [] - #for i,one in enumerate(aparams): - # line = "%d %g %g %g %g" % (i+1,0.0,0.0,0.0,0.0) - # lines.append(line+'\n') - # d.sections["BondAngle Coeffs"] = lines + lines = [] + for i,one in enumerate(ubparams): + strone = [str(single) for single in one] + line = "%d %s" % (i+1,' '.join(strone)) + lines.append(line+'\n') + d.sections["UreyBradley Coeffs"] = lines lines = [] for i,one in enumerate(alist): @@ -887,7 +1337,8 @@ if ndihedrals: lines = [] for i,one in enumerate(dparams): - line = "%d %s" % (i+1,' '.join(one)) + strone = [str(single) for single in one] + line = "%d %s" % (i+1,' '.join(strone)) lines.append(line+'\n') d.sections["Dihedral Coeffs"] = lines @@ -897,6 +1348,71 @@ if ndihedrals: lines.append(line+'\n') d.sections["Dihedrals"] = lines +if nimpropers: + d.headers["impropers"] = len(olist) + d.headers["improper types"] = len(oparams) + + lines = [] + for i,one in enumerate(oparams): + strone = [str(single) for single in one] + line = "%d %s" % (i+1,' '.join(strone)) + lines.append(line+'\n') + d.sections["Improper Coeffs"] = lines + + lines = [] + for i,one in enumerate(olist): + line = "%d %d %d %d %d %d" % (i+1,otype[i],one[0],one[1],one[2],one[3]) + lines.append(line+'\n') + d.sections["Impropers"] = lines + +if npitorsions: + d.headers["pitorsions"] = len(pitorsionlist) + d.headers["pitorsion types"] = len(pitorsionparams) + + lines = [] + for i,one in enumerate(pitorsionparams): + strone = [str(single) for single in one] + line = "%d %s" % (i+1,' '.join(strone)) + lines.append(line+'\n') + d.sections["PiTorsion Coeffs"] = lines + + lines = [] + for i,one in enumerate(pitorsionlist): + line = "%d %d %d %d %d %d %d %d" % \ + (i+1,pitorsiontype[i],one[0],one[1],one[2],one[3],one[4],one[5]) + lines.append(line+'\n') + d.sections["PiTorsions"] = lines + +if nbitorsions: + d.headers["bitorsions"] = len(bitorsionlist) + + # if there are bitorsions, then -bitorsion file must have been specified + + if not bitorsionfile: + error("no -bitorsion file was specified, but %d bitorsions exist" % \ + nbitorsions) + + fp = open(bitorsionfile,'w') + print >>fp,"Tinker BiTorsion parameter file for fix bitorsion\n" + print >>fp,"%d bitorsion types" % len(bitorsionparams) + itype = 0 + for nx,ny,array in bitorsionparams: + itype += 1 + print >>fp + print >>fp,itype,nx,ny + for ix in range(nx): + for iy in range(ny): + xgrid,ygrid,value = array[ix][iy] + print >>fp," ",xgrid,ygrid,value + fp.close() + + lines = [] + for i,one in enumerate(bitorsionlist): + line = "%d %d %d %d %d %d %d" % \ + (i+1,bitorsiontype[i],one[0],one[1],one[2],one[3],one[4]) + lines.append(line+'\n') + d.sections["BiTorsions"] = lines + d.write(datafile) # print stats to screen @@ -907,9 +1423,15 @@ print "Tinker XYZ types =",len(tink2lmp) print "Tinker PRM types =",prm.ntypes #print "Tinker groups =",ngroups print "Nmol =",nmol -print "Nbonds =",len(blist) -print "Nangles =",len(alist) -print "Ndihedrals =",len(dlist) +print "Nbonds =",nbonds +print "Nangles =",nangles +print "Ndihedrals =",ndihedrals +print "Nimpropers =",nimpropers +print "Npitorsions =",npitorsions +print "Nbitorsions =",nbitorsions print "Nbondtypes =",len(bparams) print "Nangletypes =",len(aparams) print "Ndihedraltypes =",len(dparams) +print "Nimpropertypes =",len(oparams) +print "Npitorsiontypes =",len(pitorsionparams) +print "Nbitorsiontypes =",len(bitorsionparams)