├── .gitignore ├── Data ├── Log │ ├── error_2017-08-16 │ └── output_2017-08-16 └── MarketData │ └── data2csv.py ├── Instruments ├── sh.instruments └── sz.instruments ├── LTS_API ├── LTS_ns.h ├── SecurityFtdcL2MDUserApi.h ├── SecurityFtdcL2MDUserApiDataType.h └── SecurityFtdcL2MDUserApiStruct.h ├── Makefile ├── README.md ├── ThirdParty └── inih │ ├── INIReader.cpp │ ├── INIReader.h │ ├── ini.c │ └── ini.h ├── config.ini ├── logger.hpp ├── ltsmdspi.cpp ├── ltsmdspi.h ├── main.cpp ├── mmap_buffer ├── mmapper.cpp └── mmapper.h └── timing.hpp /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Prerequisites 3 | *.d 4 | 5 | # Compiled Object files 6 | *.slo 7 | *.lo 8 | *.o 9 | *.obj 10 | 11 | # Precompiled Headers 12 | *.gch 13 | *.pch 14 | 15 | # Compiled Dynamic libraries 16 | *.so 17 | *.dylib 18 | *.dll 19 | 20 | # Fortran module files 21 | *.mod 22 | *.smod 23 | 24 | # Compiled Static libraries 25 | *.lai 26 | *.la 27 | *.a 28 | *.lib 29 | 30 | # Executables 31 | *.exe 32 | *.out 33 | *.app 34 | 35 | # ignore log 36 | Data/log/ 37 | Data/MarketData/* 38 | !Data/MarketData/data2csv.py 39 | *.log 40 | -------------------------------------------------------------------------------- /Data/Log/error_2017-08-16: -------------------------------------------------------------------------------- 1 | Terminated by signal: 2 2 | -------------------------------------------------------------------------------- /Data/Log/output_2017-08-16: -------------------------------------------------------------------------------- 1 | [10:21:57.037] Market data spi created..., hah 2 | Safely quit mmap 3 | Market data spi deleted... 4 | -------------------------------------------------------------------------------- /Data/MarketData/data2csv.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import struct 3 | 4 | # https://docs.python.org/3/library/struct.html 5 | 6 | 7 | header_fmt = 'QQII' 8 | 9 | # XTP 10 | xtp_body_formats = ( 11 | 'i16sddddddddddddddqqdd10d10d10q10q\ 12 | q8sqqddddddiidddddddiiddddqqiiiii4sddd', # market data 13 | 14 | '', # market index 15 | 16 | '', # market order 17 | 18 | '' # market trade 19 | ) 20 | 21 | # LTS, no padding 22 | # DO NOT CHANGE THE ORDER 23 | lts_body_formats = ( 24 | '', # Unknown 25 | 26 | '9s9s9s31sddddddccdddddddddddddii\ 27 | ddiddiddiddiddiddiddiddiddiddi\ 28 | ddiddiddiddiddiddiddiddiddiddi\ 29 | i4s7sddddddddddddddddddddddddddd', # market data 30 | 31 | '9s9s9s31sdddddddd4s', # market index 32 | 33 | 'ii9s9s31sdd2s2s4s', # market order 34 | 35 | 'iiii9s9s31sdd2s2s2s4s' # market trade 36 | ) 37 | 38 | # parse bytes to tupple 39 | def parseMsg(buf, msg_id): 40 | return struct.unpack(xtp_body_formats[msg_id], buf) 41 | 42 | def generate_csv_from_data(dataFilePath): 43 | filePath = sys.argv[1] 44 | fileName = filePath.split('/')[-1] 45 | with open(filePath, 'rb') as dataf: 46 | # 如果已经存在 csv 则删除 47 | csvPath = filePath + '.csv' 48 | # if os.access(csvPath, os.R_OK): 49 | # os.remove(csvPath) 50 | with open(csvPath, 'w') as csvf: 51 | readIdx = 0 52 | HEADER_SIZE = 24 53 | while True: 54 | # 读取 header 55 | dataf.seek(readIdx) 56 | buf = dataf.read(HEADER_SIZE) 57 | if len(buf) == 0: 58 | return 59 | header = struct.unpack(header_fmt, buf) 60 | csvf.write(','.join('{0}'.format(x) for x in header) + '\n') 61 | readIdx += HEADER_SIZE 62 | # 读取 body 63 | msg_id = header[2] 64 | body_size = header[3] 65 | dataf.seek(readIdx) 66 | msg = parseMsg(dataf.read(body_size), msg_id) 67 | csvf.write(', '.join('{0}'.format(x) for x in msg) + '\n') 68 | readIdx += body_size 69 | 70 | 71 | if __name__ == '__main__': 72 | if len(sys.argv) != 2: 73 | print("usage: python3 " + sys.argv[0] + " ") 74 | exit(0) 75 | 76 | generate_csv_from_data(sys.argv[1]) 77 | -------------------------------------------------------------------------------- /Instruments/sh.instruments: -------------------------------------------------------------------------------- 1 | 010107 2 | 010213 3 | 010303 4 | 010504 5 | 010512 6 | 010609 7 | 010619 8 | 010706 9 | 010710 10 | 010713 11 | 018002 12 | 018003 13 | 018005 14 | 018006 15 | 019002 16 | 019003 17 | 019007 18 | 019009 19 | 019012 20 | 019014 21 | 019015 22 | 019018 23 | 019019 24 | 019022 25 | 019023 26 | 019024 27 | 019026 28 | 019027 29 | 019029 30 | 019031 31 | 019032 32 | 019034 33 | 019037 34 | 019038 35 | 019040 36 | 019041 37 | 019102 38 | 019103 39 | 019105 40 | 019106 41 | 019108 42 | 019110 43 | 019112 44 | 019115 45 | 019116 46 | 019117 47 | 019119 48 | 019121 49 | 019123 50 | 019124 51 | 019204 52 | 019205 53 | 019206 54 | 019208 55 | 019209 56 | 019210 57 | 019212 58 | 019213 59 | 019214 60 | 019215 61 | 019216 62 | 019218 63 | 019220 64 | 019221 65 | 019301 66 | 019303 67 | 019305 68 | 019308 69 | 019309 70 | 019310 71 | 019311 72 | 019313 73 | 019315 74 | 019316 75 | 019318 76 | 019319 77 | 019320 78 | 019323 79 | 019324 80 | 019325 81 | 019401 82 | 019403 83 | 019405 84 | 019406 85 | 019408 86 | 019409 87 | 019410 88 | 019412 89 | 019413 90 | 019416 91 | 019417 92 | 019420 93 | 019421 94 | 019424 95 | 019425 96 | 019426 97 | 019427 98 | 019429 99 | 019502 100 | 019503 101 | 019504 102 | 019505 103 | 019507 104 | 019508 105 | 019510 106 | 019511 107 | 019512 108 | 019513 109 | 019514 110 | 019516 111 | 019517 112 | 019519 113 | 019521 114 | 019522 115 | 019523 116 | 019525 117 | 019526 118 | 019528 119 | 019530 120 | 019531 121 | 019532 122 | 019534 123 | 019535 124 | 019536 125 | 019537 126 | 019538 127 | 019539 128 | 019540 129 | 019541 130 | 019542 131 | 019543 132 | 019544 133 | 019545 134 | 019546 135 | 019547 136 | 019548 137 | 019549 138 | 019550 139 | 019551 140 | 019552 141 | 019553 142 | 019554 143 | 019555 144 | 019556 145 | 019557 146 | 019558 147 | 019559 148 | 019560 149 | 019561 150 | 019562 151 | 019802 152 | 019803 153 | 019806 154 | 019810 155 | 019813 156 | 019818 157 | 019820 158 | 019823 159 | 019825 160 | 019902 161 | 019903 162 | 019905 163 | 019907 164 | 019911 165 | 019912 166 | 019916 167 | 019920 168 | 019923 169 | 019925 170 | 019927 171 | 019930 172 | 020148 173 | 020154 174 | 020159 175 | 020161 176 | 020162 177 | 020163 178 | 020164 179 | 020165 180 | 020166 181 | 020167 182 | 020168 183 | 020169 184 | 020170 185 | 020171 186 | 020172 187 | 020173 188 | 020174 189 | 020175 190 | 110030 191 | 110031 192 | 110032 193 | 110033 194 | 110034 195 | 110035 196 | 113008 197 | 113009 198 | 113010 199 | 113011 200 | 113012 201 | 120201 202 | 120203 203 | 120204 204 | 120301 205 | 120303 206 | 120306 207 | 120486 208 | 120490 209 | 120506 210 | 120508 211 | 120512 212 | 120527 213 | 120529 214 | 120601 215 | 120602 216 | 120603 217 | 120605 218 | 120607 219 | 120608 220 | 120609 221 | 120702 222 | 122000 223 | 122001 224 | 122004 225 | 122007 226 | 122008 227 | 122015 228 | 122017 229 | 122019 230 | 122028 231 | 122037 232 | 122043 233 | 122046 234 | 122049 235 | 122052 236 | 122054 237 | 122055 238 | 122057 239 | 122059 240 | 122060 241 | 122062 242 | 122064 243 | 122066 244 | 122067 245 | 122069 246 | 122071 247 | 122072 248 | 122075 249 | 122077 250 | 122080 251 | 122081 252 | 122083 253 | 122087 254 | 122093 255 | 122096 256 | 122099 257 | 122102 258 | 122105 259 | 122107 260 | 122108 261 | 122109 262 | 122110 263 | 122112 264 | 122118 265 | 122124 266 | 122125 267 | 122127 268 | 122133 269 | 122134 270 | 122138 271 | 122143 272 | 122145 273 | 122146 274 | 122147 275 | 122148 276 | 122149 277 | 122150 278 | 122151 279 | 122152 280 | 122154 281 | 122155 282 | 122156 283 | 122157 284 | 122158 285 | 122159 286 | 122162 287 | 122163 288 | 122164 289 | 122166 290 | 122167 291 | 122168 292 | 122169 293 | 122172 294 | 122173 295 | 122174 296 | 122175 297 | 122176 298 | 122178 299 | 122179 300 | 122180 301 | 122181 302 | 122182 303 | 122183 304 | 122184 305 | 122186 306 | 122187 307 | 122188 308 | 122189 309 | 122190 310 | 122191 311 | 122192 312 | 122193 313 | 122194 314 | 122195 315 | 122196 316 | 122197 317 | 122199 318 | 122200 319 | 122201 320 | 122202 321 | 122203 322 | 122204 323 | 122205 324 | 122207 325 | 122208 326 | 122209 327 | 122210 328 | 122211 329 | 122212 330 | 122213 331 | 122215 332 | 122216 333 | 122217 334 | 122218 335 | 122219 336 | 122221 337 | 122222 338 | 122224 339 | 122225 340 | 122226 341 | 122227 342 | 122228 343 | 122229 344 | 122230 345 | 122231 346 | 122232 347 | 122233 348 | 122234 349 | 122235 350 | 122236 351 | 122237 352 | 122239 353 | 122240 354 | 122241 355 | 122242 356 | 122243 357 | 122244 358 | 122245 359 | 122247 360 | 122248 361 | 122249 362 | 122250 363 | 122251 364 | 122252 365 | 122253 366 | 122254 367 | 122255 368 | 122256 369 | 122257 370 | 122258 371 | 122259 372 | 122260 373 | 122261 374 | 122262 375 | 122263 376 | 122264 377 | 122265 378 | 122267 379 | 122268 380 | 122269 381 | 122270 382 | 122271 383 | 122272 384 | 122273 385 | 122276 386 | 122278 387 | 122281 388 | 122282 389 | 122284 390 | 122285 391 | 122287 392 | 122288 393 | 122292 394 | 122293 395 | 122294 396 | 122295 397 | 122298 398 | 122299 399 | 122301 400 | 122302 401 | 122304 402 | 122305 403 | 122306 404 | 122308 405 | 122310 406 | 122311 407 | 122312 408 | 122313 409 | 122315 410 | 122316 411 | 122317 412 | 122318 413 | 122319 414 | 122320 415 | 122321 416 | 122322 417 | 122323 418 | 122324 419 | 122327 420 | 122328 421 | 122329 422 | 122330 423 | 122331 424 | 122332 425 | 122333 426 | 122334 427 | 122335 428 | 122336 429 | 122337 430 | 122338 431 | 122339 432 | 122340 433 | 122341 434 | 122342 435 | 122343 436 | 122344 437 | 122345 438 | 122346 439 | 122347 440 | 122348 441 | 122349 442 | 122350 443 | 122351 444 | 122352 445 | 122353 446 | 122354 447 | 122355 448 | 122356 449 | 122357 450 | 122358 451 | 122360 452 | 122361 453 | 122362 454 | 122363 455 | 122364 456 | 122365 457 | 122366 458 | 122367 459 | 122368 460 | 122369 461 | 122370 462 | 122371 463 | 122372 464 | 122373 465 | 122374 466 | 122375 467 | 122376 468 | 122377 469 | 122378 470 | 122379 471 | 122380 472 | 122381 473 | 122382 474 | 122383 475 | 122384 476 | 122385 477 | 122386 478 | 122387 479 | 122388 480 | 122390 481 | 122391 482 | 122392 483 | 122393 484 | 122394 485 | 122395 486 | 122396 487 | 122397 488 | 122398 489 | 122399 490 | 122401 491 | 122402 492 | 122403 493 | 122404 494 | 122405 495 | 122406 496 | 122407 497 | 122408 498 | 122409 499 | 122410 500 | 122411 501 | 122412 502 | 122413 503 | 122414 504 | 122415 505 | 122416 506 | 122417 507 | 122418 508 | 122419 509 | 122420 510 | 122421 511 | 122422 512 | 122423 513 | 122424 514 | 122425 515 | 122426 516 | 122427 517 | 122428 518 | 122429 519 | 122430 520 | 122431 521 | 122432 522 | 122433 523 | 122434 524 | 122435 525 | 122436 526 | 122437 527 | 122438 528 | 122439 529 | 122440 530 | 122441 531 | 122442 532 | 122443 533 | 122444 534 | 122445 535 | 122446 536 | 122447 537 | 122448 538 | 122449 539 | 122450 540 | 122451 541 | 122452 542 | 122453 543 | 122454 544 | 122455 545 | 122456 546 | 122457 547 | 122458 548 | 122459 549 | 122460 550 | 122461 551 | 122462 552 | 122463 553 | 122464 554 | 122465 555 | 122466 556 | 122467 557 | 122468 558 | 122469 559 | 122470 560 | 122472 561 | 122473 562 | 122474 563 | 122475 564 | 122476 565 | 122477 566 | 122478 567 | 122479 568 | 122480 569 | 122481 570 | 122482 571 | 122483 572 | 122484 573 | 122485 574 | 122486 575 | 122487 576 | 122488 577 | 122489 578 | 122490 579 | 122491 580 | 122492 581 | 122493 582 | 122494 583 | 122495 584 | 122496 585 | 122497 586 | 122498 587 | 122499 588 | 122500 589 | 122501 590 | 122502 591 | 122503 592 | 122504 593 | 122505 594 | 122506 595 | 122507 596 | 122508 597 | 122509 598 | 122510 599 | 122513 600 | 122514 601 | 122515 602 | 122516 603 | 122517 604 | 122518 605 | 122519 606 | 122520 607 | 122521 608 | 122522 609 | 122523 610 | 122524 611 | 122525 612 | 122526 613 | 122527 614 | 122528 615 | 122530 616 | 122531 617 | 122532 618 | 122533 619 | 122534 620 | 122535 621 | 122536 622 | 122537 623 | 122538 624 | 122539 625 | 122540 626 | 122541 627 | 122542 628 | 122543 629 | 122544 630 | 122545 631 | 122546 632 | 122547 633 | 122549 634 | 122550 635 | 122551 636 | 122552 637 | 122553 638 | 122554 639 | 122555 640 | 122556 641 | 122557 642 | 122558 643 | 122559 644 | 122560 645 | 122561 646 | 122562 647 | 122563 648 | 122564 649 | 122565 650 | 122566 651 | 122567 652 | 122568 653 | 122569 654 | 122570 655 | 122571 656 | 122572 657 | 122573 658 | 122574 659 | 122575 660 | 122576 661 | 122577 662 | 122578 663 | 122580 664 | 122581 665 | 122582 666 | 122583 667 | 122584 668 | 122585 669 | 122586 670 | 122587 671 | 122588 672 | 122589 673 | 122590 674 | 122591 675 | 122592 676 | 122593 677 | 122594 678 | 122595 679 | 122596 680 | 122597 681 | 122598 682 | 122599 683 | 122600 684 | 122601 685 | 122602 686 | 122603 687 | 122604 688 | 122605 689 | 122606 690 | 122607 691 | 122608 692 | 122609 693 | 122610 694 | 122611 695 | 122612 696 | 122613 697 | 122614 698 | 122615 699 | 122616 700 | 122617 701 | 122618 702 | 122619 703 | 122620 704 | 122621 705 | 122622 706 | 122623 707 | 122624 708 | 122625 709 | 122626 710 | 122627 711 | 122628 712 | 122629 713 | 122630 714 | 122631 715 | 122632 716 | 122633 717 | 122634 718 | 122635 719 | 122636 720 | 122637 721 | 122638 722 | 122639 723 | 122640 724 | 122641 725 | 122642 726 | 122643 727 | 122644 728 | 122645 729 | 122648 730 | 122649 731 | 122650 732 | 122651 733 | 122652 734 | 122654 735 | 122655 736 | 122658 737 | 122659 738 | 122660 739 | 122661 740 | 122662 741 | 122663 742 | 122664 743 | 122665 744 | 122666 745 | 122667 746 | 122668 747 | 122669 748 | 122670 749 | 122671 750 | 122672 751 | 122673 752 | 122674 753 | 122675 754 | 122676 755 | 122677 756 | 122678 757 | 122679 758 | 122680 759 | 122681 760 | 122682 761 | 122683 762 | 122684 763 | 122685 764 | 122686 765 | 122687 766 | 122688 767 | 122689 768 | 122690 769 | 122691 770 | 122692 771 | 122693 772 | 122694 773 | 122695 774 | 122696 775 | 122697 776 | 122698 777 | 122699 778 | 122700 779 | 122701 780 | 122702 781 | 122703 782 | 122704 783 | 122706 784 | 122707 785 | 122709 786 | 122710 787 | 122711 788 | 122712 789 | 122713 790 | 122714 791 | 122715 792 | 122716 793 | 122717 794 | 122718 795 | 122719 796 | 122720 797 | 122721 798 | 122722 799 | 122723 800 | 122724 801 | 122725 802 | 122726 803 | 122727 804 | 122728 805 | 122729 806 | 122730 807 | 122731 808 | 122732 809 | 122734 810 | 122735 811 | 122736 812 | 122737 813 | 122741 814 | 122742 815 | 122743 816 | 122744 817 | 122745 818 | 122746 819 | 122747 820 | 122748 821 | 122749 822 | 122750 823 | 122751 824 | 122752 825 | 122753 826 | 122754 827 | 122755 828 | 122756 829 | 122757 830 | 122758 831 | 122759 832 | 122760 833 | 122762 834 | 122763 835 | 122764 836 | 122765 837 | 122766 838 | 122767 839 | 122768 840 | 122769 841 | 122770 842 | 122771 843 | 122772 844 | 122774 845 | 122775 846 | 122776 847 | 122777 848 | 122778 849 | 122779 850 | 122780 851 | 122781 852 | 122782 853 | 122783 854 | 122784 855 | 122786 856 | 122787 857 | 122788 858 | 122789 859 | 122790 860 | 122792 861 | 122794 862 | 122795 863 | 122796 864 | 122797 865 | 122798 866 | 122799 867 | 122800 868 | 122801 869 | 122802 870 | 122803 871 | 122804 872 | 122805 873 | 122806 874 | 122807 875 | 122808 876 | 122809 877 | 122810 878 | 122811 879 | 122812 880 | 122813 881 | 122814 882 | 122816 883 | 122817 884 | 122818 885 | 122819 886 | 122820 887 | 122821 888 | 122822 889 | 122823 890 | 122824 891 | 122825 892 | 122827 893 | 122828 894 | 122829 895 | 122830 896 | 122831 897 | 122832 898 | 122833 899 | 122834 900 | 122835 901 | 122836 902 | 122837 903 | 122838 904 | 122839 905 | 122840 906 | 122841 907 | 122842 908 | 122843 909 | 122844 910 | 122845 911 | 122846 912 | 122847 913 | 122848 914 | 122849 915 | 122850 916 | 122852 917 | 122854 918 | 122855 919 | 122856 920 | 122859 921 | 122861 922 | 122862 923 | 122863 924 | 122864 925 | 122865 926 | 122866 927 | 122867 928 | 122868 929 | 122869 930 | 122870 931 | 122871 932 | 122872 933 | 122873 934 | 122875 935 | 122876 936 | 122877 937 | 122879 938 | 122881 939 | 122882 940 | 122883 941 | 122884 942 | 122885 943 | 122886 944 | 122887 945 | 122888 946 | 122889 947 | 122890 948 | 122891 949 | 122892 950 | 122893 951 | 122894 952 | 122895 953 | 122896 954 | 122897 955 | 122898 956 | 122899 957 | 122900 958 | 122901 959 | 122902 960 | 122903 961 | 122904 962 | 122906 963 | 122907 964 | 122911 965 | 122912 966 | 122915 967 | 122917 968 | 122927 969 | 122928 970 | 122934 971 | 122938 972 | 122940 973 | 122941 974 | 122956 975 | 122961 976 | 122965 977 | 122969 978 | 122975 979 | 122995 980 | 122999 981 | 124000 982 | 124001 983 | 124002 984 | 124003 985 | 124004 986 | 124005 987 | 124006 988 | 124007 989 | 124008 990 | 124009 991 | 124010 992 | 124011 993 | 124012 994 | 124013 995 | 124014 996 | 124015 997 | 124016 998 | 124017 999 | 124018 1000 | 124019 1001 | 124020 1002 | 124021 1003 | 124022 1004 | 124023 1005 | 124024 1006 | 124025 1007 | 124026 1008 | 124027 1009 | 124028 1010 | 124029 1011 | 124030 1012 | 124031 1013 | 124032 1014 | 124033 1015 | 124034 1016 | 124035 1017 | 124036 1018 | 124037 1019 | 124038 1020 | 124039 1021 | 124040 1022 | 124041 1023 | 124042 1024 | 124043 1025 | 124044 1026 | 124045 1027 | 124046 1028 | 124047 1029 | 124048 1030 | 124049 1031 | 124050 1032 | 124051 1033 | 124052 1034 | 124053 1035 | 124054 1036 | 124055 1037 | 124056 1038 | 124057 1039 | 124058 1040 | 124059 1041 | 124060 1042 | 124061 1043 | 124062 1044 | 124063 1045 | 124064 1046 | 124065 1047 | 124066 1048 | 124070 1049 | 124071 1050 | 124072 1051 | 124073 1052 | 124074 1053 | 124075 1054 | 124076 1055 | 124077 1056 | 124078 1057 | 124079 1058 | 124080 1059 | 124081 1060 | 124082 1061 | 124083 1062 | 124084 1063 | 124085 1064 | 124086 1065 | 124087 1066 | 124088 1067 | 124089 1068 | 124090 1069 | 124091 1070 | 124092 1071 | 124093 1072 | 124094 1073 | 124095 1074 | 124096 1075 | 124097 1076 | 124098 1077 | 124099 1078 | 124100 1079 | 124101 1080 | 124102 1081 | 124103 1082 | 124104 1083 | 124105 1084 | 124106 1085 | 124107 1086 | 124108 1087 | 124110 1088 | 124111 1089 | 124112 1090 | 124113 1091 | 124114 1092 | 124116 1093 | 124117 1094 | 124118 1095 | 124119 1096 | 124120 1097 | 124121 1098 | 124122 1099 | 124123 1100 | 124124 1101 | 124125 1102 | 124126 1103 | 124127 1104 | 124128 1105 | 124129 1106 | 124130 1107 | 124131 1108 | 124132 1109 | 124133 1110 | 124134 1111 | 124135 1112 | 124136 1113 | 124137 1114 | 124138 1115 | 124139 1116 | 124140 1117 | 124141 1118 | 124142 1119 | 124143 1120 | 124144 1121 | 124145 1122 | 124146 1123 | 124147 1124 | 124148 1125 | 124149 1126 | 124150 1127 | 124151 1128 | 124152 1129 | 124153 1130 | 124154 1131 | 124155 1132 | 124156 1133 | 124158 1134 | 124159 1135 | 124160 1136 | 124161 1137 | 124162 1138 | 124163 1139 | 124164 1140 | 124165 1141 | 124166 1142 | 124167 1143 | 124168 1144 | 124169 1145 | 124170 1146 | 124171 1147 | 124172 1148 | 124173 1149 | 124174 1150 | 124175 1151 | 124176 1152 | 124177 1153 | 124178 1154 | 124179 1155 | 124180 1156 | 124181 1157 | 124182 1158 | 124183 1159 | 124184 1160 | 124185 1161 | 124187 1162 | 124188 1163 | 124189 1164 | 124190 1165 | 124191 1166 | 124192 1167 | 124193 1168 | 124194 1169 | 124195 1170 | 124196 1171 | 124199 1172 | 124200 1173 | 124201 1174 | 124202 1175 | 124203 1176 | 124204 1177 | 124205 1178 | 124206 1179 | 124207 1180 | 124208 1181 | 124209 1182 | 124210 1183 | 124211 1184 | 124212 1185 | 124213 1186 | 124214 1187 | 124215 1188 | 124216 1189 | 124217 1190 | 124218 1191 | 124219 1192 | 124220 1193 | 124221 1194 | 124222 1195 | 124223 1196 | 124224 1197 | 124225 1198 | 124226 1199 | 124227 1200 | 124228 1201 | 124229 1202 | 124230 1203 | 124231 1204 | 124232 1205 | 124234 1206 | 124235 1207 | 124236 1208 | 124238 1209 | 124239 1210 | 124240 1211 | 124241 1212 | 124242 1213 | 124243 1214 | 124244 1215 | 124245 1216 | 124246 1217 | 124247 1218 | 124248 1219 | 124249 1220 | 124250 1221 | 124251 1222 | 124252 1223 | 124253 1224 | 124254 1225 | 124255 1226 | 124256 1227 | 124257 1228 | 124258 1229 | 124259 1230 | 124260 1231 | 124261 1232 | 124262 1233 | 124263 1234 | 124264 1235 | 124265 1236 | 124266 1237 | 124267 1238 | 124268 1239 | 124269 1240 | 124270 1241 | 124271 1242 | 124272 1243 | 124273 1244 | 124275 1245 | 124276 1246 | 124277 1247 | 124278 1248 | 124279 1249 | 124280 1250 | 124281 1251 | 124283 1252 | 124284 1253 | 124285 1254 | 124286 1255 | 124287 1256 | 124288 1257 | 124289 1258 | 124290 1259 | 124291 1260 | 124292 1261 | 124293 1262 | 124294 1263 | 124295 1264 | 124296 1265 | 124297 1266 | 124298 1267 | 124299 1268 | 124300 1269 | 124301 1270 | 124302 1271 | 124303 1272 | 124304 1273 | 124305 1274 | 124306 1275 | 124307 1276 | 124308 1277 | 124309 1278 | 124310 1279 | 124311 1280 | 124312 1281 | 124313 1282 | 124314 1283 | 124315 1284 | 124316 1285 | 124317 1286 | 124318 1287 | 124319 1288 | 124321 1289 | 124322 1290 | 124323 1291 | 124324 1292 | 124325 1293 | 124326 1294 | 124327 1295 | 124328 1296 | 124329 1297 | 124330 1298 | 124332 1299 | 124333 1300 | 124334 1301 | 124335 1302 | 124336 1303 | 124337 1304 | 124338 1305 | 124339 1306 | 124340 1307 | 124341 1308 | 124342 1309 | 124343 1310 | 124344 1311 | 124345 1312 | 124346 1313 | 124347 1314 | 124348 1315 | 124349 1316 | 124350 1317 | 124351 1318 | 124352 1319 | 124353 1320 | 124354 1321 | 124355 1322 | 124356 1323 | 124357 1324 | 124358 1325 | 124359 1326 | 124360 1327 | 124361 1328 | 124362 1329 | 124363 1330 | 124364 1331 | 124365 1332 | 124366 1333 | 124367 1334 | 124368 1335 | 124369 1336 | 124370 1337 | 124371 1338 | 124373 1339 | 124374 1340 | 124375 1341 | 124376 1342 | 124377 1343 | 124378 1344 | 124379 1345 | 124380 1346 | 124384 1347 | 124385 1348 | 124386 1349 | 124387 1350 | 124388 1351 | 124389 1352 | 124390 1353 | 124391 1354 | 124392 1355 | 124393 1356 | 124394 1357 | 124395 1358 | 124396 1359 | 124397 1360 | 124398 1361 | 124399 1362 | 124400 1363 | 124401 1364 | 124402 1365 | 124403 1366 | 124404 1367 | 124405 1368 | 124406 1369 | 124407 1370 | 124408 1371 | 124409 1372 | 124410 1373 | 124411 1374 | 124412 1375 | 124413 1376 | 124415 1377 | 124416 1378 | 124417 1379 | 124418 1380 | 124419 1381 | 124420 1382 | 124421 1383 | 124422 1384 | 124423 1385 | 124424 1386 | 124425 1387 | 124426 1388 | 124427 1389 | 124428 1390 | 124429 1391 | 124430 1392 | 124431 1393 | 124432 1394 | 124433 1395 | 124434 1396 | 124435 1397 | 124436 1398 | 124437 1399 | 124438 1400 | 124439 1401 | 124440 1402 | 124441 1403 | 124442 1404 | 124443 1405 | 124444 1406 | 124445 1407 | 124446 1408 | 124448 1409 | 124449 1410 | 124450 1411 | 124451 1412 | 124452 1413 | 124453 1414 | 124454 1415 | 124455 1416 | 124456 1417 | 124457 1418 | 124458 1419 | 124459 1420 | 124460 1421 | 124461 1422 | 124462 1423 | 124463 1424 | 124464 1425 | 124465 1426 | 124466 1427 | 124467 1428 | 124468 1429 | 124469 1430 | 124470 1431 | 124471 1432 | 124472 1433 | 124474 1434 | 124475 1435 | 124477 1436 | 124478 1437 | 124479 1438 | 124480 1439 | 124481 1440 | 124482 1441 | 124483 1442 | 124485 1443 | 124486 1444 | 124487 1445 | 124488 1446 | 124489 1447 | 124490 1448 | 124491 1449 | 124492 1450 | 124493 1451 | 124494 1452 | 124495 1453 | 124496 1454 | 124497 1455 | 124498 1456 | 124499 1457 | 124500 1458 | 124501 1459 | 124502 1460 | 124505 1461 | 124507 1462 | 124508 1463 | 124509 1464 | 124510 1465 | 124511 1466 | 124513 1467 | 124514 1468 | 124515 1469 | 124516 1470 | 124517 1471 | 124518 1472 | 124519 1473 | 124520 1474 | 124521 1475 | 124522 1476 | 124523 1477 | 124524 1478 | 124525 1479 | 124526 1480 | 124527 1481 | 124528 1482 | 124529 1483 | 124530 1484 | 124531 1485 | 124532 1486 | 124533 1487 | 124534 1488 | 124535 1489 | 124536 1490 | 124537 1491 | 124538 1492 | 124539 1493 | 124540 1494 | 124541 1495 | 124542 1496 | 124543 1497 | 124544 1498 | 124545 1499 | 124546 1500 | 124547 1501 | 124548 1502 | 124549 1503 | 124550 1504 | 124551 1505 | 124552 1506 | 124553 1507 | 124554 1508 | 124555 1509 | 124556 1510 | 124557 1511 | 124558 1512 | 124559 1513 | 124560 1514 | 124561 1515 | 124562 1516 | 124563 1517 | 124564 1518 | 124565 1519 | 124566 1520 | 124567 1521 | 124568 1522 | 124569 1523 | 124570 1524 | 124571 1525 | 124572 1526 | 124573 1527 | 124574 1528 | 124575 1529 | 124576 1530 | 124577 1531 | 124578 1532 | 124580 1533 | 124581 1534 | 124582 1535 | 124583 1536 | 124584 1537 | 124585 1538 | 124586 1539 | 124587 1540 | 124588 1541 | 124589 1542 | 124590 1543 | 124591 1544 | 124592 1545 | 124593 1546 | 124594 1547 | 124595 1548 | 124596 1549 | 124597 1550 | 124598 1551 | 124599 1552 | 124600 1553 | 124601 1554 | 124602 1555 | 124603 1556 | 124604 1557 | 124605 1558 | 124606 1559 | 124607 1560 | 124608 1561 | 124609 1562 | 124610 1563 | 124611 1564 | 124612 1565 | 124613 1566 | 124614 1567 | 124615 1568 | 124616 1569 | 124617 1570 | 124618 1571 | 124619 1572 | 124620 1573 | 124621 1574 | 124622 1575 | 124623 1576 | 124624 1577 | 124626 1578 | 124627 1579 | 124628 1580 | 124629 1581 | 124630 1582 | 124631 1583 | 124632 1584 | 124633 1585 | 124634 1586 | 124635 1587 | 124636 1588 | 124637 1589 | 124638 1590 | 124639 1591 | 124641 1592 | 124642 1593 | 124643 1594 | 124644 1595 | 124645 1596 | 124646 1597 | 124647 1598 | 124648 1599 | 124649 1600 | 124650 1601 | 124651 1602 | 124652 1603 | 124653 1604 | 124654 1605 | 124655 1606 | 124656 1607 | 124657 1608 | 124658 1609 | 124659 1610 | 124660 1611 | 124661 1612 | 124662 1613 | 124663 1614 | 124664 1615 | 124665 1616 | 124666 1617 | 124667 1618 | 124668 1619 | 124669 1620 | 124670 1621 | 124671 1622 | 124672 1623 | 124673 1624 | 124674 1625 | 124675 1626 | 124676 1627 | 124677 1628 | 124678 1629 | 124679 1630 | 124680 1631 | 124681 1632 | 124682 1633 | 124683 1634 | 124684 1635 | 124685 1636 | 124686 1637 | 124687 1638 | 124688 1639 | 124689 1640 | 124690 1641 | 124691 1642 | 124692 1643 | 124693 1644 | 124694 1645 | 124695 1646 | 124696 1647 | 124697 1648 | 124698 1649 | 124699 1650 | 124700 1651 | 124701 1652 | 124702 1653 | 124703 1654 | 124704 1655 | 124705 1656 | 124706 1657 | 124707 1658 | 124709 1659 | 124710 1660 | 124711 1661 | 124712 1662 | 124713 1663 | 124714 1664 | 124715 1665 | 124716 1666 | 124717 1667 | 124718 1668 | 124719 1669 | 124720 1670 | 124721 1671 | 124722 1672 | 124723 1673 | 124724 1674 | 124725 1675 | 124726 1676 | 124727 1677 | 124728 1678 | 124729 1679 | 124730 1680 | 124731 1681 | 124732 1682 | 124733 1683 | 124734 1684 | 124735 1685 | 124736 1686 | 124737 1687 | 124738 1688 | 124739 1689 | 124740 1690 | 124741 1691 | 124742 1692 | 124743 1693 | 124744 1694 | 124745 1695 | 124746 1696 | 124747 1697 | 124748 1698 | 124749 1699 | 124750 1700 | 124751 1701 | 124752 1702 | 124753 1703 | 124754 1704 | 124755 1705 | 124756 1706 | 124757 1707 | 124758 1708 | 124759 1709 | 124760 1710 | 124761 1711 | 124762 1712 | 124763 1713 | 124764 1714 | 124765 1715 | 124766 1716 | 124767 1717 | 124768 1718 | 124769 1719 | 124770 1720 | 124771 1721 | 124772 1722 | 124773 1723 | 124774 1724 | 124775 1725 | 124776 1726 | 124777 1727 | 124778 1728 | 124779 1729 | 124781 1730 | 124782 1731 | 124783 1732 | 124785 1733 | 124786 1734 | 124787 1735 | 124788 1736 | 124789 1737 | 124790 1738 | 124791 1739 | 124792 1740 | 124793 1741 | 124794 1742 | 124795 1743 | 124796 1744 | 124797 1745 | 124799 1746 | 124800 1747 | 124801 1748 | 124802 1749 | 124803 1750 | 124804 1751 | 124805 1752 | 124806 1753 | 124807 1754 | 124808 1755 | 124809 1756 | 124810 1757 | 124811 1758 | 124812 1759 | 124813 1760 | 124814 1761 | 124815 1762 | 124816 1763 | 124817 1764 | 124818 1765 | 124819 1766 | 124820 1767 | 124821 1768 | 124822 1769 | 124823 1770 | 124824 1771 | 124827 1772 | 124828 1773 | 124829 1774 | 124830 1775 | 124831 1776 | 124832 1777 | 124833 1778 | 124834 1779 | 124835 1780 | 124836 1781 | 124837 1782 | 124839 1783 | 124840 1784 | 124841 1785 | 124842 1786 | 124843 1787 | 124844 1788 | 124845 1789 | 124846 1790 | 124847 1791 | 124848 1792 | 124849 1793 | 124850 1794 | 124851 1795 | 124852 1796 | 124853 1797 | 124854 1798 | 124855 1799 | 124856 1800 | 124857 1801 | 124858 1802 | 124859 1803 | 124860 1804 | 124861 1805 | 124862 1806 | 124863 1807 | 124864 1808 | 124865 1809 | 124866 1810 | 124868 1811 | 124869 1812 | 124870 1813 | 124871 1814 | 124872 1815 | 124873 1816 | 124874 1817 | 124875 1818 | 124876 1819 | 124877 1820 | 124878 1821 | 124879 1822 | 124880 1823 | 124881 1824 | 124882 1825 | 124883 1826 | 124884 1827 | 124885 1828 | 124886 1829 | 124887 1830 | 124888 1831 | 124889 1832 | 124890 1833 | 124891 1834 | 124892 1835 | 124893 1836 | 124894 1837 | 124895 1838 | 124896 1839 | 124897 1840 | 124898 1841 | 124899 1842 | 124900 1843 | 124901 1844 | 124902 1845 | 124903 1846 | 124904 1847 | 124905 1848 | 124906 1849 | 124907 1850 | 124908 1851 | 124909 1852 | 124910 1853 | 124911 1854 | 124912 1855 | 124913 1856 | 124914 1857 | 124915 1858 | 124916 1859 | 124917 1860 | 124918 1861 | 124919 1862 | 124920 1863 | 124921 1864 | 124923 1865 | 124924 1866 | 124925 1867 | 124926 1868 | 124927 1869 | 124928 1870 | 124929 1871 | 124930 1872 | 124931 1873 | 124932 1874 | 124933 1875 | 124934 1876 | 124935 1877 | 124936 1878 | 124937 1879 | 124938 1880 | 124939 1881 | 124940 1882 | 124941 1883 | 124942 1884 | 124943 1885 | 124944 1886 | 124945 1887 | 124946 1888 | 124947 1889 | 124948 1890 | 124949 1891 | 124950 1892 | 124951 1893 | 124952 1894 | 124953 1895 | 124956 1896 | 124957 1897 | 124958 1898 | 124959 1899 | 124960 1900 | 124961 1901 | 124962 1902 | 124963 1903 | 124964 1904 | 124965 1905 | 124966 1906 | 124967 1907 | 124968 1908 | 124969 1909 | 124970 1910 | 124971 1911 | 124972 1912 | 124973 1913 | 124974 1914 | 124975 1915 | 124976 1916 | 124977 1917 | 124978 1918 | 124979 1919 | 124980 1920 | 124981 1921 | 124982 1922 | 124983 1923 | 124984 1924 | 124985 1925 | 124986 1926 | 124987 1927 | 124988 1928 | 124989 1929 | 124999 1930 | 127000 1931 | 127001 1932 | 127002 1933 | 127003 1934 | 127004 1935 | 127005 1936 | 127006 1937 | 127007 1938 | 127008 1939 | 127009 1940 | 127010 1941 | 127011 1942 | 127012 1943 | 127013 1944 | 127014 1945 | 127015 1946 | 127016 1947 | 127017 1948 | 127018 1949 | 127019 1950 | 127020 1951 | 127021 1952 | 127022 1953 | 127023 1954 | 127024 1955 | 127025 1956 | 127026 1957 | 127027 1958 | 127028 1959 | 127029 1960 | 127030 1961 | 127031 1962 | 127032 1963 | 127033 1964 | 127034 1965 | 127035 1966 | 127037 1967 | 127038 1968 | 127039 1969 | 127040 1970 | 127041 1971 | 127042 1972 | 127043 1973 | 127044 1974 | 127045 1975 | 127046 1976 | 127047 1977 | 127048 1978 | 127049 1979 | 127050 1980 | 127051 1981 | 127052 1982 | 127053 1983 | 127054 1984 | 127055 1985 | 127056 1986 | 127057 1987 | 127058 1988 | 127059 1989 | 127060 1990 | 127061 1991 | 127062 1992 | 127065 1993 | 127066 1994 | 127067 1995 | 127068 1996 | 127069 1997 | 127070 1998 | 127071 1999 | 127072 2000 | 127073 2001 | 127074 2002 | 127075 2003 | 127076 2004 | 127077 2005 | 127078 2006 | 127079 2007 | 127080 2008 | 127081 2009 | 127082 2010 | 127083 2011 | 127084 2012 | 127085 2013 | 127087 2014 | 127088 2015 | 127089 2016 | 127090 2017 | 127091 2018 | 127092 2019 | 127093 2020 | 127094 2021 | 127095 2022 | 127096 2023 | 127097 2024 | 127098 2025 | 127099 2026 | 127100 2027 | 127101 2028 | 127102 2029 | 127104 2030 | 127105 2031 | 127106 2032 | 127107 2033 | 127108 2034 | 127109 2035 | 127110 2036 | 127111 2037 | 127112 2038 | 127113 2039 | 127114 2040 | 127115 2041 | 127116 2042 | 127117 2043 | 127118 2044 | 127119 2045 | 127120 2046 | 127121 2047 | 127122 2048 | 127123 2049 | 127124 2050 | 127125 2051 | 127126 2052 | 127127 2053 | 127128 2054 | 127129 2055 | 127130 2056 | 127131 2057 | 127132 2058 | 127133 2059 | 127134 2060 | 127135 2061 | 127136 2062 | 127137 2063 | 127138 2064 | 127139 2065 | 127140 2066 | 127141 2067 | 127142 2068 | 127143 2069 | 127144 2070 | 127145 2071 | 127146 2072 | 127147 2073 | 127148 2074 | 127149 2075 | 127150 2076 | 127151 2077 | 127152 2078 | 127153 2079 | 127154 2080 | 127155 2081 | 127156 2082 | 127157 2083 | 127158 2084 | 127159 2085 | 127160 2086 | 127161 2087 | 127162 2088 | 127163 2089 | 127164 2090 | 127165 2091 | 127166 2092 | 127167 2093 | 127168 2094 | 127169 2095 | 127170 2096 | 127171 2097 | 127172 2098 | 127173 2099 | 127174 2100 | 127175 2101 | 127176 2102 | 127177 2103 | 127178 2104 | 127179 2105 | 127180 2106 | 127181 2107 | 127182 2108 | 127183 2109 | 127184 2110 | 127185 2111 | 127186 2112 | 127187 2113 | 127188 2114 | 127189 2115 | 127190 2116 | 127191 2117 | 127192 2118 | 127193 2119 | 127194 2120 | 127195 2121 | 127196 2122 | 127197 2123 | 127198 2124 | 127199 2125 | 127200 2126 | 127201 2127 | 127202 2128 | 127203 2129 | 127204 2130 | 127205 2131 | 127206 2132 | 127207 2133 | 127208 2134 | 127209 2135 | 127210 2136 | 127211 2137 | 127212 2138 | 127213 2139 | 127214 2140 | 127215 2141 | 127216 2142 | 127219 2143 | 127220 2144 | 127221 2145 | 127222 2146 | 127223 2147 | 127224 2148 | 127225 2149 | 127226 2150 | 127227 2151 | 127228 2152 | 127229 2153 | 127230 2154 | 127231 2155 | 127232 2156 | 127233 2157 | 127234 2158 | 127235 2159 | 127236 2160 | 127237 2161 | 127238 2162 | 127239 2163 | 127240 2164 | 127241 2165 | 127242 2166 | 127243 2167 | 127244 2168 | 127245 2169 | 127246 2170 | 127247 2171 | 127248 2172 | 127249 2173 | 127250 2174 | 127251 2175 | 127252 2176 | 127253 2177 | 127255 2178 | 127256 2179 | 127257 2180 | 127258 2181 | 127259 2182 | 127260 2183 | 127261 2184 | 127262 2185 | 127263 2186 | 127264 2187 | 127265 2188 | 127266 2189 | 127267 2190 | 127268 2191 | 127269 2192 | 127270 2193 | 127271 2194 | 127272 2195 | 127273 2196 | 127274 2197 | 127275 2198 | 127276 2199 | 127277 2200 | 127278 2201 | 127279 2202 | 127280 2203 | 127281 2204 | 127282 2205 | 127283 2206 | 127284 2207 | 127285 2208 | 127286 2209 | 127287 2210 | 127288 2211 | 127289 2212 | 127290 2213 | 127291 2214 | 127292 2215 | 127293 2216 | 127294 2217 | 127295 2218 | 127296 2219 | 127297 2220 | 127298 2221 | 127299 2222 | 127300 2223 | 127301 2224 | 127302 2225 | 127303 2226 | 127304 2227 | 127305 2228 | 127306 2229 | 127307 2230 | 127308 2231 | 127309 2232 | 127310 2233 | 127311 2234 | 127312 2235 | 127313 2236 | 127314 2237 | 127315 2238 | 127316 2239 | 127317 2240 | 127318 2241 | 127319 2242 | 127320 2243 | 127321 2244 | 127322 2245 | 127323 2246 | 127324 2247 | 127326 2248 | 127327 2249 | 127328 2250 | 127329 2251 | 127330 2252 | 127331 2253 | 127332 2254 | 127333 2255 | 127334 2256 | 127335 2257 | 127336 2258 | 127337 2259 | 127338 2260 | 127339 2261 | 127340 2262 | 127341 2263 | 127342 2264 | 127344 2265 | 127345 2266 | 127346 2267 | 127347 2268 | 127348 2269 | 127349 2270 | 127350 2271 | 127351 2272 | 127352 2273 | 127353 2274 | 127354 2275 | 127355 2276 | 127356 2277 | 127357 2278 | 127358 2279 | 127359 2280 | 127360 2281 | 127361 2282 | 127362 2283 | 127363 2284 | 127364 2285 | 127365 2286 | 127366 2287 | 127367 2288 | 127368 2289 | 127369 2290 | 127370 2291 | 127371 2292 | 127372 2293 | 127373 2294 | 127374 2295 | 127375 2296 | 127376 2297 | 127377 2298 | 127378 2299 | 127379 2300 | 127380 2301 | 127381 2302 | 127382 2303 | 127383 2304 | 127384 2305 | 127385 2306 | 127386 2307 | 127387 2308 | 127388 2309 | 127390 2310 | 127391 2311 | 127392 2312 | 127393 2313 | 127394 2314 | 127395 2315 | 127396 2316 | 127397 2317 | 127398 2318 | 127399 2319 | 127400 2320 | 127401 2321 | 127402 2322 | 127403 2323 | 127404 2324 | 127405 2325 | 127406 2326 | 127407 2327 | 127408 2328 | 127409 2329 | 127410 2330 | 127411 2331 | 127412 2332 | 127413 2333 | 127414 2334 | 127415 2335 | 127416 2336 | 127417 2337 | 127418 2338 | 127419 2339 | 127420 2340 | 127421 2341 | 127422 2342 | 127424 2343 | 127425 2344 | 127426 2345 | 127427 2346 | 127428 2347 | 127429 2348 | 127430 2349 | 127431 2350 | 127432 2351 | 127433 2352 | 127434 2353 | 127435 2354 | 127436 2355 | 127437 2356 | 127438 2357 | 127439 2358 | 127440 2359 | 127441 2360 | 127442 2361 | 127443 2362 | 127445 2363 | 127446 2364 | 127447 2365 | 127448 2366 | 127449 2367 | 127450 2368 | 127451 2369 | 127452 2370 | 127453 2371 | 127454 2372 | 127455 2373 | 127456 2374 | 127457 2375 | 127458 2376 | 127459 2377 | 127460 2378 | 127461 2379 | 127462 2380 | 127463 2381 | 127464 2382 | 127465 2383 | 127467 2384 | 127468 2385 | 127469 2386 | 127470 2387 | 127471 2388 | 127473 2389 | 127474 2390 | 127479 2391 | 127481 2392 | 130077 2393 | 130079 2394 | 130081 2395 | 130083 2396 | 130084 2397 | 130085 2398 | 130086 2399 | 130087 2400 | 130089 2401 | 130090 2402 | 130091 2403 | 130092 2404 | 130093 2405 | 130095 2406 | 130097 2407 | 130099 2408 | 130101 2409 | 130102 2410 | 130103 2411 | 130105 2412 | 130106 2413 | 130107 2414 | 130108 2415 | 130109 2416 | 130110 2417 | 130111 2418 | 130113 2419 | 130114 2420 | 130115 2421 | 130116 2422 | 130117 2423 | 130118 2424 | 130119 2425 | 130120 2426 | 130121 2427 | 130122 2428 | 130123 2429 | 130124 2430 | 130125 2431 | 130126 2432 | 130127 2433 | 130128 2434 | 130129 2435 | 130130 2436 | 130131 2437 | 130132 2438 | 130133 2439 | 130134 2440 | 130135 2441 | 130136 2442 | 130137 2443 | 130138 2444 | 130139 2445 | 130140 2446 | 130141 2447 | 130142 2448 | 130143 2449 | 130144 2450 | 130145 2451 | 130146 2452 | 130147 2453 | 130148 2454 | 130149 2455 | 130150 2456 | 130151 2457 | 130152 2458 | 130153 2459 | 130154 2460 | 130155 2461 | 130156 2462 | 130157 2463 | 130158 2464 | 130159 2465 | 130160 2466 | 130161 2467 | 130162 2468 | 130163 2469 | 130164 2470 | 130165 2471 | 130166 2472 | 130167 2473 | 130168 2474 | 130169 2475 | 130170 2476 | 130171 2477 | 130172 2478 | 130173 2479 | 130174 2480 | 130175 2481 | 130176 2482 | 130177 2483 | 130178 2484 | 130179 2485 | 130180 2486 | 130181 2487 | 130182 2488 | 130183 2489 | 130184 2490 | 130185 2491 | 130186 2492 | 130187 2493 | 130188 2494 | 130189 2495 | 130190 2496 | 130191 2497 | 130192 2498 | 130193 2499 | 130194 2500 | 130195 2501 | 130196 2502 | 130197 2503 | 130198 2504 | 130199 2505 | 130200 2506 | 130201 2507 | 130202 2508 | 130203 2509 | 130204 2510 | 130205 2511 | 130206 2512 | 130207 2513 | 130208 2514 | 130209 2515 | 130210 2516 | 130211 2517 | 130212 2518 | 130213 2519 | 130214 2520 | 130215 2521 | 130216 2522 | 130217 2523 | 130218 2524 | 130219 2525 | 130220 2526 | 130221 2527 | 130222 2528 | 130223 2529 | 130224 2530 | 130225 2531 | 130226 2532 | 130227 2533 | 130228 2534 | 130229 2535 | 130230 2536 | 130231 2537 | 130232 2538 | 130233 2539 | 130234 2540 | 130235 2541 | 130236 2542 | 130237 2543 | 130238 2544 | 130239 2545 | 130240 2546 | 130241 2547 | 130242 2548 | 130243 2549 | 130244 2550 | 130245 2551 | 130246 2552 | 130247 2553 | 130248 2554 | 130249 2555 | 130250 2556 | 130251 2557 | 130252 2558 | 130253 2559 | 130254 2560 | 130255 2561 | 130256 2562 | 130257 2563 | 130258 2564 | 130259 2565 | 130260 2566 | 130261 2567 | 130262 2568 | 130263 2569 | 130264 2570 | 130265 2571 | 130266 2572 | 130267 2573 | 130268 2574 | 130269 2575 | 130270 2576 | 130271 2577 | 130272 2578 | 130273 2579 | 130274 2580 | 130275 2581 | 130276 2582 | 130277 2583 | 130278 2584 | 130279 2585 | 130280 2586 | 130281 2587 | 130282 2588 | 130283 2589 | 130284 2590 | 130285 2591 | 130286 2592 | 130287 2593 | 130288 2594 | 130289 2595 | 130290 2596 | 130291 2597 | 130292 2598 | 130293 2599 | 130294 2600 | 130295 2601 | 130296 2602 | 130297 2603 | 130298 2604 | 130299 2605 | 130300 2606 | 130301 2607 | 130302 2608 | 130303 2609 | 130304 2610 | 130305 2611 | 130306 2612 | 130307 2613 | 130308 2614 | 130309 2615 | 130310 2616 | 130311 2617 | 130312 2618 | 130313 2619 | 130314 2620 | 130315 2621 | 130316 2622 | 130317 2623 | 130318 2624 | 130319 2625 | 130320 2626 | 130321 2627 | 130322 2628 | 130323 2629 | 130324 2630 | 130325 2631 | 130326 2632 | 130327 2633 | 130328 2634 | 130329 2635 | 130330 2636 | 130331 2637 | 130332 2638 | 130333 2639 | 130334 2640 | 130335 2641 | 130336 2642 | 130337 2643 | 130338 2644 | 130339 2645 | 130340 2646 | 130341 2647 | 130342 2648 | 130343 2649 | 130344 2650 | 130345 2651 | 130346 2652 | 130347 2653 | 130348 2654 | 130349 2655 | 130350 2656 | 130351 2657 | 130352 2658 | 130353 2659 | 130354 2660 | 130355 2661 | 130356 2662 | 130357 2663 | 130358 2664 | 130359 2665 | 130360 2666 | 130361 2667 | 130362 2668 | 130363 2669 | 130364 2670 | 130365 2671 | 130366 2672 | 130367 2673 | 130368 2674 | 130369 2675 | 130370 2676 | 130371 2677 | 130372 2678 | 130373 2679 | 130374 2680 | 130375 2681 | 130376 2682 | 130377 2683 | 130378 2684 | 130379 2685 | 130380 2686 | 130381 2687 | 130382 2688 | 130383 2689 | 130384 2690 | 130385 2691 | 130386 2692 | 130387 2693 | 130388 2694 | 130389 2695 | 130390 2696 | 130391 2697 | 130392 2698 | 130393 2699 | 130394 2700 | 130395 2701 | 130396 2702 | 130397 2703 | 130398 2704 | 130399 2705 | 130400 2706 | 130401 2707 | 130402 2708 | 130403 2709 | 130404 2710 | 130405 2711 | 130406 2712 | 130407 2713 | 130408 2714 | 130409 2715 | 130411 2716 | 130412 2717 | 130413 2718 | 130414 2719 | 130415 2720 | 130416 2721 | 130417 2722 | 130418 2723 | 130419 2724 | 130420 2725 | 130421 2726 | 130422 2727 | 130423 2728 | 130424 2729 | 130425 2730 | 130426 2731 | 130427 2732 | 130428 2733 | 130429 2734 | 130430 2735 | 130431 2736 | 130432 2737 | 130433 2738 | 130434 2739 | 130435 2740 | 130436 2741 | 130437 2742 | 130438 2743 | 130439 2744 | 130440 2745 | 130441 2746 | 130442 2747 | 130443 2748 | 130444 2749 | 130445 2750 | 130446 2751 | 130447 2752 | 130448 2753 | 130449 2754 | 130450 2755 | 130451 2756 | 130452 2757 | 130453 2758 | 130454 2759 | 130455 2760 | 130456 2761 | 130457 2762 | 130458 2763 | 130459 2764 | 130460 2765 | 130461 2766 | 130462 2767 | 130463 2768 | 130464 2769 | 130465 2770 | 130466 2771 | 130467 2772 | 130468 2773 | 130469 2774 | 130470 2775 | 130471 2776 | 130472 2777 | 130473 2778 | 130474 2779 | 130475 2780 | 130476 2781 | 130477 2782 | 130478 2783 | 130479 2784 | 130480 2785 | 130481 2786 | 130482 2787 | 130483 2788 | 130484 2789 | 130485 2790 | 130486 2791 | 130487 2792 | 130488 2793 | 130489 2794 | 130490 2795 | 130491 2796 | 130492 2797 | 130493 2798 | 130494 2799 | 130495 2800 | 130496 2801 | 130497 2802 | 130498 2803 | 130499 2804 | 130500 2805 | 130501 2806 | 130502 2807 | 130503 2808 | 130504 2809 | 130505 2810 | 130506 2811 | 130507 2812 | 130508 2813 | 130509 2814 | 130510 2815 | 130511 2816 | 130512 2817 | 130513 2818 | 130514 2819 | 130515 2820 | 130516 2821 | 130517 2822 | 130518 2823 | 130519 2824 | 130520 2825 | 130521 2826 | 130522 2827 | 130523 2828 | 130524 2829 | 130525 2830 | 130526 2831 | 130527 2832 | 130528 2833 | 130529 2834 | 130530 2835 | 130531 2836 | 130532 2837 | 130533 2838 | 130534 2839 | 130535 2840 | 130536 2841 | 130537 2842 | 130538 2843 | 130539 2844 | 130540 2845 | 130541 2846 | 130542 2847 | 130543 2848 | 130544 2849 | 130545 2850 | 130546 2851 | 130547 2852 | 130548 2853 | 130549 2854 | 130550 2855 | 130551 2856 | 130552 2857 | 130553 2858 | 130554 2859 | 130555 2860 | 130556 2861 | 130557 2862 | 130558 2863 | 130559 2864 | 130560 2865 | 130561 2866 | 130562 2867 | 130563 2868 | 130564 2869 | 130565 2870 | 130566 2871 | 130567 2872 | 130568 2873 | 130569 2874 | 130570 2875 | 130571 2876 | 130572 2877 | 130573 2878 | 130574 2879 | 130575 2880 | 130576 2881 | 130577 2882 | 130578 2883 | 130579 2884 | 130580 2885 | 130581 2886 | 130582 2887 | 130583 2888 | 130584 2889 | 130585 2890 | 130586 2891 | 130587 2892 | 130588 2893 | 130589 2894 | 130590 2895 | 130591 2896 | 130592 2897 | 130593 2898 | 130594 2899 | 130595 2900 | 130596 2901 | 130597 2902 | 130598 2903 | 130599 2904 | 130600 2905 | 130601 2906 | 130602 2907 | 130603 2908 | 130604 2909 | 130605 2910 | 130606 2911 | 130607 2912 | 130608 2913 | 130609 2914 | 130610 2915 | 130611 2916 | 130612 2917 | 130613 2918 | 130614 2919 | 130615 2920 | 130616 2921 | 130617 2922 | 130618 2923 | 130619 2924 | 130620 2925 | 130621 2926 | 130622 2927 | 130623 2928 | 130624 2929 | 130625 2930 | 130626 2931 | 130627 2932 | 130628 2933 | 130629 2934 | 130630 2935 | 130631 2936 | 130632 2937 | 130633 2938 | 130634 2939 | 130635 2940 | 130636 2941 | 130637 2942 | 130638 2943 | 130639 2944 | 130640 2945 | 130641 2946 | 130642 2947 | 130643 2948 | 130644 2949 | 130645 2950 | 130646 2951 | 130647 2952 | 130648 2953 | 130649 2954 | 130650 2955 | 130651 2956 | 130652 2957 | 130653 2958 | 130654 2959 | 130655 2960 | 130656 2961 | 130657 2962 | 130658 2963 | 130659 2964 | 130660 2965 | 130661 2966 | 130662 2967 | 130663 2968 | 130664 2969 | 130665 2970 | 130666 2971 | 130667 2972 | 130668 2973 | 130669 2974 | 130670 2975 | 130671 2976 | 130672 2977 | 130673 2978 | 130674 2979 | 130675 2980 | 130676 2981 | 130677 2982 | 130678 2983 | 130679 2984 | 130680 2985 | 130681 2986 | 130682 2987 | 130683 2988 | 130684 2989 | 130685 2990 | 130686 2991 | 130687 2992 | 130688 2993 | 130689 2994 | 130690 2995 | 130691 2996 | 130692 2997 | 130693 2998 | 130694 2999 | 130695 3000 | 130696 3001 | 130697 3002 | 130698 3003 | 130699 3004 | 130700 3005 | 130701 3006 | 130702 3007 | 130703 3008 | 130704 3009 | 130705 3010 | 130706 3011 | 130707 3012 | 130708 3013 | 130709 3014 | 130710 3015 | 130711 3016 | 130712 3017 | 130713 3018 | 130714 3019 | 130715 3020 | 130716 3021 | 130717 3022 | 130718 3023 | 130719 3024 | 130720 3025 | 130721 3026 | 130722 3027 | 130723 3028 | 130724 3029 | 130725 3030 | 130726 3031 | 130727 3032 | 130728 3033 | 130729 3034 | 130730 3035 | 130731 3036 | 130732 3037 | 130733 3038 | 130734 3039 | 130735 3040 | 130736 3041 | 130737 3042 | 130738 3043 | 130739 3044 | 130740 3045 | 130741 3046 | 130742 3047 | 130743 3048 | 130744 3049 | 130745 3050 | 130746 3051 | 130747 3052 | 130748 3053 | 130749 3054 | 130750 3055 | 130751 3056 | 130752 3057 | 130753 3058 | 130754 3059 | 130755 3060 | 130756 3061 | 130757 3062 | 130758 3063 | 130759 3064 | 130760 3065 | 130761 3066 | 130762 3067 | 130763 3068 | 130764 3069 | 130765 3070 | 130766 3071 | 130767 3072 | 130768 3073 | 130769 3074 | 130770 3075 | 130771 3076 | 130772 3077 | 130773 3078 | 130774 3079 | 130775 3080 | 130776 3081 | 130777 3082 | 130778 3083 | 130779 3084 | 130780 3085 | 130781 3086 | 130782 3087 | 130783 3088 | 130784 3089 | 130785 3090 | 130786 3091 | 130787 3092 | 130788 3093 | 130789 3094 | 130790 3095 | 130791 3096 | 130792 3097 | 130793 3098 | 130794 3099 | 130795 3100 | 130796 3101 | 130797 3102 | 130798 3103 | 130799 3104 | 130800 3105 | 130801 3106 | 130802 3107 | 130803 3108 | 130804 3109 | 130805 3110 | 130806 3111 | 130807 3112 | 130808 3113 | 130809 3114 | 130810 3115 | 130811 3116 | 130812 3117 | 130813 3118 | 130814 3119 | 130815 3120 | 130816 3121 | 130817 3122 | 130818 3123 | 130819 3124 | 130820 3125 | 130821 3126 | 130822 3127 | 130823 3128 | 130824 3129 | 130825 3130 | 130826 3131 | 130827 3132 | 130828 3133 | 130829 3134 | 130830 3135 | 130831 3136 | 130832 3137 | 130833 3138 | 130834 3139 | 130835 3140 | 130836 3141 | 130837 3142 | 130838 3143 | 130839 3144 | 130840 3145 | 130841 3146 | 130842 3147 | 130843 3148 | 130844 3149 | 130845 3150 | 130846 3151 | 130847 3152 | 130848 3153 | 130849 3154 | 130850 3155 | 130851 3156 | 130852 3157 | 130853 3158 | 130854 3159 | 130855 3160 | 130856 3161 | 130857 3162 | 130858 3163 | 130859 3164 | 130860 3165 | 130861 3166 | 130862 3167 | 130863 3168 | 130864 3169 | 130865 3170 | 130866 3171 | 130867 3172 | 130868 3173 | 130869 3174 | 130870 3175 | 130871 3176 | 130872 3177 | 130873 3178 | 130874 3179 | 130875 3180 | 130876 3181 | 130877 3182 | 130878 3183 | 130879 3184 | 130880 3185 | 130881 3186 | 130882 3187 | 130883 3188 | 130884 3189 | 130885 3190 | 130886 3191 | 130887 3192 | 130888 3193 | 130889 3194 | 130890 3195 | 130891 3196 | 130892 3197 | 130893 3198 | 130894 3199 | 130895 3200 | 130896 3201 | 130897 3202 | 130898 3203 | 130899 3204 | 130900 3205 | 130901 3206 | 130902 3207 | 130903 3208 | 130904 3209 | 130905 3210 | 130906 3211 | 130907 3212 | 130908 3213 | 130909 3214 | 130910 3215 | 130911 3216 | 130912 3217 | 130913 3218 | 130914 3219 | 130915 3220 | 130916 3221 | 130917 3222 | 130918 3223 | 130919 3224 | 130920 3225 | 130921 3226 | 130922 3227 | 130923 3228 | 130924 3229 | 130925 3230 | 130926 3231 | 130927 3232 | 130928 3233 | 130929 3234 | 130930 3235 | 130931 3236 | 130932 3237 | 130933 3238 | 130934 3239 | 130935 3240 | 130936 3241 | 130937 3242 | 130938 3243 | 130939 3244 | 130940 3245 | 130941 3246 | 130942 3247 | 130943 3248 | 130944 3249 | 130945 3250 | 130946 3251 | 130947 3252 | 130948 3253 | 130949 3254 | 130950 3255 | 130951 3256 | 130952 3257 | 130953 3258 | 130954 3259 | 130955 3260 | 130956 3261 | 130957 3262 | 130958 3263 | 130959 3264 | 130960 3265 | 130961 3266 | 130962 3267 | 130963 3268 | 130964 3269 | 130965 3270 | 130966 3271 | 130967 3272 | 130968 3273 | 130969 3274 | 130970 3275 | 130971 3276 | 130972 3277 | 130973 3278 | 130974 3279 | 130975 3280 | 130976 3281 | 130977 3282 | 130978 3283 | 130979 3284 | 130980 3285 | 130981 3286 | 130982 3287 | 130983 3288 | 130984 3289 | 130985 3290 | 130986 3291 | 130987 3292 | 130988 3293 | 130989 3294 | 130990 3295 | 130991 3296 | 130992 3297 | 130993 3298 | 130994 3299 | 130995 3300 | 130996 3301 | 130997 3302 | 130998 3303 | 130999 3304 | 132001 3305 | 132002 3306 | 132003 3307 | 132004 3308 | 132005 3309 | 132006 3310 | 132007 3311 | 136000 3312 | 136001 3313 | 136002 3314 | 136003 3315 | 136004 3316 | 136005 3317 | 136006 3318 | 136007 3319 | 136008 3320 | 136009 3321 | 136010 3322 | 136011 3323 | 136012 3324 | 136013 3325 | 136014 3326 | 136015 3327 | 136016 3328 | 136017 3329 | 136019 3330 | 136020 3331 | 136021 3332 | 136022 3333 | 136023 3334 | 136024 3335 | 136025 3336 | 136026 3337 | 136027 3338 | 136028 3339 | 136029 3340 | 136030 3341 | 136031 3342 | 136032 3343 | 136033 3344 | 136034 3345 | 136035 3346 | 136036 3347 | 136037 3348 | 136038 3349 | 136039 3350 | 136040 3351 | 136041 3352 | 136042 3353 | 136043 3354 | 136044 3355 | 136045 3356 | 136046 3357 | 136047 3358 | 136048 3359 | 136049 3360 | 136050 3361 | 136051 3362 | 136052 3363 | 136053 3364 | 136055 3365 | 136056 3366 | 136057 3367 | 136058 3368 | 136059 3369 | 136060 3370 | 136061 3371 | 136062 3372 | 136063 3373 | 136064 3374 | 136065 3375 | 136066 3376 | 136067 3377 | 136068 3378 | 136069 3379 | 136070 3380 | 136071 3381 | 136072 3382 | 136073 3383 | 136074 3384 | 136075 3385 | 136076 3386 | 136077 3387 | 136078 3388 | 136079 3389 | 136080 3390 | 136081 3391 | 136082 3392 | 136083 3393 | 136084 3394 | 136085 3395 | 136086 3396 | 136087 3397 | 136088 3398 | 136089 3399 | 136090 3400 | 136091 3401 | 136092 3402 | 136093 3403 | 136094 3404 | 136095 3405 | 136096 3406 | 136097 3407 | 136098 3408 | 136099 3409 | 136100 3410 | 136101 3411 | 136102 3412 | 136103 3413 | 136104 3414 | 136105 3415 | 136106 3416 | 136107 3417 | 136108 3418 | 136109 3419 | 136110 3420 | 136111 3421 | 136112 3422 | 136113 3423 | 136114 3424 | 136115 3425 | 136116 3426 | 136117 3427 | 136118 3428 | 136119 3429 | 136120 3430 | 136121 3431 | 136122 3432 | 136123 3433 | 136124 3434 | 136125 3435 | 136126 3436 | 136127 3437 | 136128 3438 | 136129 3439 | 136130 3440 | 136131 3441 | 136132 3442 | 136133 3443 | 136134 3444 | 136135 3445 | 136136 3446 | 136137 3447 | 136138 3448 | 136139 3449 | 136140 3450 | 136141 3451 | 136142 3452 | 136143 3453 | 136144 3454 | 136145 3455 | 136146 3456 | 136147 3457 | 136148 3458 | 136149 3459 | 136150 3460 | 136151 3461 | 136152 3462 | 136153 3463 | 136154 3464 | 136155 3465 | 136156 3466 | 136157 3467 | 136158 3468 | 136159 3469 | 136160 3470 | 136161 3471 | 136162 3472 | 136163 3473 | 136164 3474 | 136165 3475 | 136166 3476 | 136167 3477 | 136168 3478 | 136169 3479 | 136170 3480 | 136171 3481 | 136172 3482 | 136173 3483 | 136174 3484 | 136175 3485 | 136176 3486 | 136177 3487 | 136178 3488 | 136179 3489 | 136180 3490 | 136181 3491 | 136182 3492 | 136183 3493 | 136184 3494 | 136185 3495 | 136186 3496 | 136187 3497 | 136188 3498 | 136189 3499 | 136190 3500 | 136191 3501 | 136192 3502 | 136193 3503 | 136194 3504 | 136195 3505 | 136196 3506 | 136197 3507 | 136198 3508 | 136199 3509 | 136200 3510 | 136201 3511 | 136202 3512 | 136203 3513 | 136204 3514 | 136205 3515 | 136206 3516 | 136207 3517 | 136208 3518 | 136209 3519 | 136210 3520 | 136211 3521 | 136212 3522 | 136213 3523 | 136214 3524 | 136215 3525 | 136217 3526 | 136218 3527 | 136219 3528 | 136220 3529 | 136221 3530 | 136222 3531 | 136223 3532 | 136224 3533 | 136225 3534 | 136226 3535 | 136227 3536 | 136228 3537 | 136229 3538 | 136230 3539 | 136231 3540 | 136232 3541 | 136233 3542 | 136234 3543 | 136235 3544 | 136236 3545 | 136237 3546 | 136238 3547 | 136239 3548 | 136240 3549 | 136241 3550 | 136242 3551 | 136243 3552 | 136244 3553 | 136245 3554 | 136246 3555 | 136247 3556 | 136248 3557 | 136249 3558 | 136250 3559 | 136251 3560 | 136252 3561 | 136253 3562 | 136254 3563 | 136255 3564 | 136256 3565 | 136257 3566 | 136258 3567 | 136259 3568 | 136260 3569 | 136261 3570 | 136262 3571 | 136263 3572 | 136264 3573 | 136265 3574 | 136266 3575 | 136267 3576 | 136268 3577 | 136269 3578 | 136270 3579 | 136271 3580 | 136272 3581 | 136273 3582 | 136274 3583 | 136275 3584 | 136276 3585 | 136277 3586 | 136278 3587 | 136279 3588 | 136280 3589 | 136281 3590 | 136282 3591 | 136283 3592 | 136284 3593 | 136285 3594 | 136286 3595 | 136287 3596 | 136288 3597 | 136289 3598 | 136290 3599 | 136291 3600 | 136292 3601 | 136293 3602 | 136294 3603 | 136295 3604 | 136296 3605 | 136297 3606 | 136298 3607 | 136299 3608 | 136300 3609 | 136301 3610 | 136302 3611 | 136303 3612 | 136304 3613 | 136305 3614 | 136306 3615 | 136307 3616 | 136308 3617 | 136309 3618 | 136310 3619 | 136311 3620 | 136312 3621 | 136313 3622 | 136314 3623 | 136315 3624 | 136316 3625 | 136317 3626 | 136318 3627 | 136319 3628 | 136320 3629 | 136321 3630 | 136322 3631 | 136323 3632 | 136324 3633 | 136325 3634 | 136326 3635 | 136327 3636 | 136328 3637 | 136329 3638 | 136330 3639 | 136331 3640 | 136332 3641 | 136334 3642 | 136335 3643 | 136336 3644 | 136337 3645 | 136338 3646 | 136339 3647 | 136340 3648 | 136341 3649 | 136342 3650 | 136343 3651 | 136344 3652 | 136345 3653 | 136346 3654 | 136347 3655 | 136348 3656 | 136349 3657 | 136350 3658 | 136351 3659 | 136352 3660 | 136353 3661 | 136354 3662 | 136355 3663 | 136356 3664 | 136358 3665 | 136360 3666 | 136361 3667 | 136362 3668 | 136363 3669 | 136364 3670 | 136365 3671 | 136366 3672 | 136367 3673 | 136368 3674 | 136369 3675 | 136370 3676 | 136371 3677 | 136372 3678 | 136374 3679 | 136375 3680 | 136376 3681 | 136377 3682 | 136378 3683 | 136379 3684 | 136380 3685 | 136382 3686 | 136383 3687 | 136384 3688 | 136385 3689 | 136386 3690 | 136387 3691 | 136388 3692 | 136389 3693 | 136390 3694 | 136391 3695 | 136393 3696 | 136394 3697 | 136396 3698 | 136397 3699 | 136398 3700 | 136399 3701 | 136400 3702 | 136401 3703 | 136402 3704 | 136403 3705 | 136404 3706 | 136405 3707 | 136406 3708 | 136407 3709 | 136408 3710 | 136411 3711 | 136412 3712 | 136414 3713 | 136415 3714 | 136416 3715 | 136417 3716 | 136418 3717 | 136419 3718 | 136420 3719 | 136421 3720 | 136422 3721 | 136424 3722 | 136425 3723 | 136426 3724 | 136427 3725 | 136429 3726 | 136430 3727 | 136431 3728 | 136432 3729 | 136433 3730 | 136434 3731 | 136435 3732 | 136436 3733 | 136438 3734 | 136439 3735 | 136440 3736 | 136441 3737 | 136442 3738 | 136443 3739 | 136445 3740 | 136446 3741 | 136447 3742 | 136448 3743 | 136449 3744 | 136450 3745 | 136451 3746 | 136452 3747 | 136453 3748 | 136454 3749 | 136455 3750 | 136456 3751 | 136457 3752 | 136458 3753 | 136459 3754 | 136460 3755 | 136461 3756 | 136462 3757 | 136463 3758 | 136464 3759 | 136465 3760 | 136466 3761 | 136467 3762 | 136468 3763 | 136469 3764 | 136470 3765 | 136471 3766 | 136472 3767 | 136473 3768 | 136474 3769 | 136475 3770 | 136477 3771 | 136478 3772 | 136479 3773 | 136480 3774 | 136481 3775 | 136482 3776 | 136483 3777 | 136484 3778 | 136485 3779 | 136486 3780 | 136487 3781 | 136488 3782 | 136489 3783 | 136490 3784 | 136491 3785 | 136492 3786 | 136493 3787 | 136494 3788 | 136495 3789 | 136496 3790 | 136497 3791 | 136498 3792 | 136499 3793 | 136500 3794 | 136501 3795 | 136502 3796 | 136503 3797 | 136504 3798 | 136505 3799 | 136506 3800 | 136507 3801 | 136508 3802 | 136509 3803 | 136510 3804 | 136511 3805 | 136512 3806 | 136513 3807 | 136514 3808 | 136515 3809 | 136516 3810 | 136517 3811 | 136518 3812 | 136519 3813 | 136520 3814 | 136521 3815 | 136522 3816 | 136523 3817 | 136524 3818 | 136525 3819 | 136526 3820 | 136527 3821 | 136528 3822 | 136529 3823 | 136530 3824 | 136531 3825 | 136532 3826 | 136533 3827 | 136534 3828 | 136535 3829 | 136536 3830 | 136537 3831 | 136538 3832 | 136539 3833 | 136540 3834 | 136541 3835 | 136542 3836 | 136543 3837 | 136544 3838 | 136545 3839 | 136546 3840 | 136547 3841 | 136548 3842 | 136549 3843 | 136550 3844 | 136551 3845 | 136552 3846 | 136553 3847 | 136554 3848 | 136555 3849 | 136556 3850 | 136557 3851 | 136558 3852 | 136559 3853 | 136560 3854 | 136561 3855 | 136562 3856 | 136563 3857 | 136564 3858 | 136565 3859 | 136566 3860 | 136567 3861 | 136568 3862 | 136569 3863 | 136570 3864 | 136571 3865 | 136572 3866 | 136573 3867 | 136574 3868 | 136575 3869 | 136576 3870 | 136577 3871 | 136578 3872 | 136579 3873 | 136580 3874 | 136581 3875 | 136582 3876 | 136583 3877 | 136584 3878 | 136585 3879 | 136586 3880 | 136587 3881 | 136588 3882 | 136589 3883 | 136590 3884 | 136591 3885 | 136592 3886 | 136593 3887 | 136594 3888 | 136595 3889 | 136596 3890 | 136597 3891 | 136598 3892 | 136599 3893 | 136600 3894 | 136601 3895 | 136602 3896 | 136603 3897 | 136604 3898 | 136605 3899 | 136606 3900 | 136607 3901 | 136608 3902 | 136609 3903 | 136610 3904 | 136611 3905 | 136612 3906 | 136613 3907 | 136614 3908 | 136615 3909 | 136616 3910 | 136617 3911 | 136619 3912 | 136620 3913 | 136621 3914 | 136622 3915 | 136623 3916 | 136624 3917 | 136625 3918 | 136626 3919 | 136627 3920 | 136628 3921 | 136629 3922 | 136630 3923 | 136631 3924 | 136632 3925 | 136633 3926 | 136634 3927 | 136635 3928 | 136636 3929 | 136637 3930 | 136638 3931 | 136639 3932 | 136640 3933 | 136641 3934 | 136642 3935 | 136643 3936 | 136644 3937 | 136645 3938 | 136646 3939 | 136647 3940 | 136648 3941 | 136649 3942 | 136650 3943 | 136651 3944 | 136652 3945 | 136653 3946 | 136654 3947 | 136655 3948 | 136656 3949 | 136657 3950 | 136660 3951 | 136661 3952 | 136662 3953 | 136663 3954 | 136664 3955 | 136665 3956 | 136666 3957 | 136667 3958 | 136668 3959 | 136669 3960 | 136670 3961 | 136671 3962 | 136672 3963 | 136673 3964 | 136674 3965 | 136675 3966 | 136676 3967 | 136677 3968 | 136678 3969 | 136679 3970 | 136680 3971 | 136681 3972 | 136682 3973 | 136683 3974 | 136684 3975 | 136685 3976 | 136686 3977 | 136687 3978 | 136688 3979 | 136689 3980 | 136690 3981 | 136692 3982 | 136693 3983 | 136694 3984 | 136695 3985 | 136696 3986 | 136697 3987 | 136698 3988 | 136699 3989 | 136700 3990 | 136701 3991 | 136702 3992 | 136703 3993 | 136704 3994 | 136705 3995 | 136706 3996 | 136707 3997 | 136708 3998 | 136709 3999 | 136710 4000 | 136711 4001 | 136712 4002 | 136713 4003 | 136714 4004 | 136715 4005 | 136716 4006 | 136718 4007 | 136719 4008 | 136720 4009 | 136721 4010 | 136722 4011 | 136723 4012 | 136724 4013 | 136725 4014 | 136726 4015 | 136727 4016 | 136728 4017 | 136729 4018 | 136730 4019 | 136731 4020 | 136732 4021 | 136733 4022 | 136734 4023 | 136735 4024 | 136736 4025 | 136737 4026 | 136738 4027 | 136739 4028 | 136741 4029 | 136742 4030 | 136743 4031 | 136744 4032 | 136745 4033 | 136746 4034 | 136747 4035 | 136748 4036 | 136749 4037 | 136750 4038 | 136751 4039 | 136752 4040 | 136753 4041 | 136754 4042 | 136755 4043 | 136756 4044 | 136757 4045 | 136758 4046 | 136759 4047 | 136760 4048 | 136762 4049 | 136763 4050 | 136764 4051 | 136765 4052 | 136766 4053 | 136767 4054 | 136768 4055 | 136769 4056 | 136770 4057 | 136771 4058 | 136772 4059 | 136773 4060 | 136774 4061 | 136775 4062 | 136776 4063 | 136777 4064 | 136778 4065 | 136779 4066 | 136780 4067 | 136781 4068 | 136782 4069 | 136783 4070 | 136784 4071 | 136786 4072 | 136787 4073 | 136788 4074 | 136789 4075 | 136790 4076 | 136791 4077 | 136792 4078 | 136793 4079 | 136794 4080 | 136796 4081 | 136797 4082 | 136798 4083 | 136799 4084 | 136800 4085 | 136801 4086 | 136802 4087 | 136803 4088 | 136804 4089 | 136805 4090 | 136806 4091 | 136807 4092 | 136808 4093 | 136809 4094 | 136810 4095 | 136811 4096 | 136812 4097 | 136813 4098 | 136814 4099 | 136815 4100 | 136816 4101 | 136817 4102 | 136818 4103 | 136819 4104 | 136820 4105 | 136821 4106 | 136822 4107 | 136823 4108 | 136824 4109 | 136825 4110 | 136826 4111 | 136827 4112 | 136830 4113 | 136831 4114 | 136832 4115 | 136835 4116 | 136836 4117 | 136837 4118 | 136838 4119 | 136839 4120 | 136840 4121 | 136842 4122 | 136843 4123 | 136845 4124 | 136846 4125 | 136847 4126 | 136849 4127 | 136850 4128 | 136851 4129 | 136852 4130 | 136853 4131 | 136854 4132 | 136855 4133 | 136856 4134 | 136857 4135 | 136859 4136 | 136860 4137 | 136861 4138 | 136863 4139 | 136864 4140 | 136865 4141 | 136866 4142 | 136867 4143 | 136868 4144 | 136869 4145 | 136870 4146 | 136871 4147 | 136872 4148 | 136873 4149 | 136874 4150 | 136875 4151 | 136877 4152 | 136879 4153 | 136880 4154 | 136881 4155 | 136882 4156 | 136883 4157 | 136884 4158 | 136886 4159 | 136887 4160 | 136888 4161 | 136889 4162 | 136892 4163 | 136893 4164 | 136894 4165 | 136895 4166 | 136896 4167 | 136897 4168 | 136898 4169 | 136970 4170 | 136972 4171 | 136974 4172 | 136977 4173 | 136979 4174 | 136980 4175 | 136981 4176 | 136982 4177 | 136983 4178 | 136985 4179 | 136986 4180 | 136987 4181 | 136989 4182 | 136991 4183 | 136992 4184 | 136993 4185 | 136994 4186 | 136995 4187 | 136996 4188 | 136997 4189 | 136998 4190 | 136999 4191 | 140000 4192 | 140001 4193 | 140002 4194 | 140003 4195 | 140004 4196 | 140005 4197 | 140006 4198 | 140007 4199 | 140008 4200 | 140009 4201 | 140010 4202 | 140011 4203 | 140012 4204 | 140013 4205 | 140014 4206 | 140015 4207 | 140016 4208 | 140017 4209 | 140018 4210 | 140019 4211 | 140020 4212 | 140021 4213 | 140022 4214 | 140023 4215 | 140024 4216 | 140025 4217 | 140026 4218 | 140027 4219 | 140028 4220 | 140029 4221 | 140030 4222 | 140031 4223 | 140032 4224 | 140033 4225 | 140034 4226 | 140035 4227 | 140036 4228 | 140037 4229 | 140038 4230 | 140039 4231 | 140040 4232 | 140041 4233 | 140042 4234 | 140043 4235 | 140044 4236 | 140045 4237 | 140046 4238 | 140047 4239 | 140048 4240 | 140049 4241 | 140050 4242 | 140051 4243 | 140052 4244 | 140053 4245 | 140054 4246 | 140055 4247 | 140056 4248 | 140057 4249 | 140058 4250 | 140059 4251 | 140060 4252 | 140061 4253 | 140062 4254 | 140063 4255 | 140064 4256 | 140065 4257 | 140066 4258 | 140067 4259 | 140068 4260 | 140069 4261 | 140070 4262 | 140071 4263 | 140072 4264 | 140073 4265 | 140074 4266 | 140075 4267 | 140076 4268 | 140077 4269 | 140078 4270 | 140079 4271 | 140080 4272 | 140081 4273 | 140082 4274 | 140083 4275 | 140084 4276 | 140085 4277 | 140086 4278 | 140087 4279 | 140088 4280 | 140089 4281 | 140090 4282 | 140091 4283 | 140092 4284 | 140093 4285 | 140094 4286 | 140095 4287 | 140096 4288 | 140097 4289 | 140098 4290 | 140099 4291 | 140100 4292 | 140101 4293 | 140102 4294 | 140103 4295 | 140104 4296 | 140105 4297 | 140106 4298 | 140107 4299 | 140108 4300 | 140109 4301 | 140110 4302 | 140111 4303 | 140112 4304 | 140113 4305 | 140114 4306 | 140115 4307 | 140116 4308 | 140117 4309 | 140118 4310 | 140119 4311 | 140120 4312 | 140121 4313 | 140122 4314 | 140123 4315 | 140124 4316 | 140125 4317 | 140126 4318 | 140127 4319 | 140128 4320 | 140129 4321 | 140130 4322 | 140131 4323 | 140132 4324 | 140133 4325 | 140134 4326 | 140135 4327 | 140136 4328 | 140137 4329 | 140138 4330 | 140139 4331 | 140140 4332 | 140141 4333 | 140142 4334 | 140143 4335 | 140144 4336 | 140145 4337 | 140146 4338 | 140147 4339 | 140148 4340 | 140149 4341 | 140150 4342 | 140151 4343 | 140152 4344 | 140153 4345 | 140154 4346 | 140155 4347 | 140156 4348 | 140157 4349 | 140158 4350 | 140159 4351 | 140160 4352 | 140161 4353 | 140162 4354 | 140163 4355 | 140164 4356 | 140165 4357 | 140166 4358 | 140167 4359 | 140168 4360 | 140169 4361 | 140170 4362 | 140171 4363 | 140172 4364 | 140173 4365 | 140174 4366 | 140175 4367 | 140176 4368 | 140177 4369 | 140178 4370 | 140179 4371 | 140180 4372 | 140181 4373 | 140182 4374 | 140183 4375 | 140184 4376 | 140185 4377 | 140186 4378 | 140187 4379 | 140188 4380 | 140189 4381 | 140190 4382 | 140191 4383 | 140192 4384 | 140193 4385 | 140194 4386 | 140195 4387 | 140196 4388 | 140197 4389 | 140198 4390 | 140199 4391 | 140200 4392 | 140201 4393 | 140202 4394 | 140203 4395 | 140204 4396 | 140205 4397 | 140206 4398 | 140207 4399 | 140208 4400 | 140209 4401 | 140210 4402 | 140211 4403 | 140212 4404 | 140213 4405 | 140214 4406 | 140215 4407 | 140216 4408 | 140217 4409 | 140218 4410 | 140219 4411 | 140220 4412 | 140221 4413 | 140222 4414 | 140223 4415 | 140224 4416 | 140225 4417 | 140226 4418 | 140227 4419 | 140228 4420 | 140229 4421 | 140230 4422 | 140231 4423 | 140232 4424 | 140233 4425 | 140234 4426 | 140235 4427 | 140236 4428 | 140237 4429 | 140238 4430 | 140239 4431 | 140240 4432 | 140241 4433 | 140242 4434 | 140243 4435 | 140244 4436 | 140245 4437 | 140246 4438 | 140247 4439 | 140248 4440 | 140249 4441 | 140250 4442 | 140251 4443 | 140252 4444 | 140253 4445 | 140254 4446 | 140255 4447 | 140256 4448 | 140257 4449 | 140258 4450 | 140259 4451 | 140260 4452 | 140261 4453 | 140262 4454 | 140263 4455 | 140264 4456 | 140265 4457 | 140266 4458 | 140267 4459 | 140268 4460 | 140269 4461 | 140270 4462 | 140271 4463 | 140272 4464 | 140273 4465 | 140274 4466 | 140275 4467 | 140276 4468 | 140277 4469 | 140278 4470 | 140279 4471 | 140280 4472 | 140281 4473 | 140282 4474 | 140283 4475 | 140284 4476 | 140285 4477 | 140286 4478 | 140287 4479 | 140288 4480 | 140289 4481 | 140290 4482 | 140291 4483 | 140292 4484 | 140293 4485 | 140294 4486 | 140295 4487 | 140296 4488 | 140297 4489 | 140298 4490 | 140299 4491 | 140300 4492 | 140301 4493 | 140302 4494 | 140303 4495 | 140304 4496 | 140305 4497 | 140306 4498 | 140307 4499 | 140308 4500 | 140309 4501 | 140310 4502 | 140311 4503 | 140312 4504 | 140313 4505 | 140314 4506 | 140315 4507 | 140316 4508 | 140317 4509 | 140318 4510 | 140319 4511 | 140320 4512 | 140321 4513 | 140322 4514 | 140323 4515 | 140324 4516 | 140325 4517 | 140326 4518 | 140327 4519 | 140328 4520 | 140329 4521 | 140330 4522 | 140331 4523 | 140332 4524 | 140333 4525 | 140334 4526 | 140335 4527 | 140336 4528 | 140337 4529 | 140338 4530 | 140339 4531 | 140340 4532 | 140341 4533 | 140342 4534 | 140343 4535 | 140344 4536 | 140345 4537 | 140346 4538 | 140347 4539 | 140348 4540 | 140349 4541 | 140350 4542 | 140351 4543 | 140352 4544 | 140353 4545 | 140354 4546 | 140355 4547 | 140356 4548 | 140357 4549 | 140358 4550 | 140359 4551 | 140360 4552 | 140361 4553 | 140362 4554 | 140363 4555 | 140364 4556 | 140365 4557 | 140366 4558 | 140367 4559 | 140368 4560 | 140369 4561 | 140370 4562 | 140371 4563 | 140372 4564 | 140373 4565 | 140374 4566 | 140375 4567 | 140376 4568 | 140377 4569 | 140378 4570 | 140379 4571 | 140380 4572 | 140381 4573 | 140382 4574 | 140383 4575 | 140384 4576 | 140385 4577 | 140386 4578 | 140387 4579 | 140388 4580 | 140389 4581 | 140390 4582 | 140391 4583 | 140392 4584 | 140393 4585 | 140394 4586 | 140395 4587 | 140396 4588 | 140397 4589 | 140398 4590 | 140399 4591 | 140400 4592 | 140401 4593 | 140402 4594 | 140403 4595 | 140404 4596 | 140405 4597 | 140406 4598 | 140407 4599 | 140408 4600 | 140409 4601 | 140410 4602 | 140411 4603 | 140412 4604 | 140413 4605 | 140414 4606 | 140415 4607 | 140416 4608 | 140417 4609 | 140418 4610 | 140419 4611 | 140420 4612 | 140421 4613 | 140422 4614 | 140423 4615 | 140424 4616 | 140425 4617 | 140426 4618 | 140427 4619 | 140428 4620 | 140429 4621 | 140430 4622 | 140431 4623 | 140432 4624 | 140433 4625 | 140434 4626 | 140435 4627 | 140436 4628 | 140437 4629 | 140438 4630 | 140439 4631 | 140440 4632 | 140441 4633 | 140442 4634 | 140443 4635 | 140444 4636 | 140445 4637 | 140446 4638 | 140447 4639 | 140448 4640 | 140449 4641 | 140450 4642 | 140451 4643 | 140452 4644 | 140453 4645 | 140454 4646 | 140455 4647 | 140456 4648 | 140457 4649 | 140458 4650 | 140459 4651 | 140460 4652 | 140461 4653 | 140462 4654 | 140463 4655 | 140464 4656 | 140465 4657 | 140466 4658 | 140467 4659 | 140468 4660 | 140469 4661 | 140470 4662 | 140471 4663 | 140472 4664 | 140473 4665 | 140474 4666 | 140475 4667 | 140476 4668 | 140477 4669 | 140478 4670 | 140479 4671 | 140480 4672 | 140481 4673 | 140482 4674 | 140483 4675 | 140484 4676 | 140485 4677 | 140486 4678 | 140487 4679 | 140488 4680 | 140489 4681 | 140490 4682 | 140491 4683 | 140492 4684 | 140493 4685 | 140494 4686 | 140495 4687 | 140496 4688 | 140497 4689 | 140498 4690 | 140499 4691 | 140500 4692 | 140501 4693 | 140502 4694 | 140503 4695 | 140504 4696 | 140505 4697 | 140506 4698 | 140507 4699 | 140508 4700 | 140509 4701 | 140510 4702 | 140511 4703 | 140512 4704 | 140513 4705 | 140514 4706 | 140516 4707 | 140517 4708 | 140518 4709 | 140519 4710 | 140520 4711 | 140521 4712 | 140522 4713 | 140523 4714 | 140524 4715 | 140525 4716 | 140526 4717 | 140527 4718 | 140528 4719 | 140529 4720 | 140530 4721 | 140531 4722 | 140532 4723 | 140533 4724 | 140534 4725 | 140535 4726 | 140536 4727 | 140537 4728 | 140538 4729 | 140539 4730 | 140540 4731 | 140541 4732 | 140542 4733 | 140543 4734 | 140544 4735 | 140545 4736 | 140546 4737 | 140547 4738 | 140548 4739 | 140549 4740 | 140550 4741 | 140551 4742 | 140552 4743 | 140553 4744 | 140554 4745 | 140555 4746 | 140556 4747 | 140557 4748 | 140558 4749 | 140559 4750 | 140560 4751 | 140561 4752 | 140562 4753 | 140563 4754 | 140564 4755 | 140565 4756 | 140566 4757 | 140567 4758 | 140568 4759 | 140569 4760 | 140570 4761 | 140571 4762 | 140572 4763 | 140573 4764 | 140574 4765 | 140575 4766 | 140576 4767 | 140577 4768 | 140578 4769 | 140579 4770 | 140580 4771 | 140581 4772 | 140582 4773 | 140583 4774 | 140584 4775 | 140585 4776 | 140586 4777 | 140587 4778 | 140588 4779 | 140589 4780 | 140590 4781 | 140591 4782 | 140592 4783 | 140593 4784 | 140594 4785 | 140595 4786 | 140596 4787 | 140597 4788 | 140598 4789 | 140599 4790 | 140600 4791 | 140900 4792 | 140901 4793 | 140902 4794 | 140903 4795 | 143001 4796 | 143004 4797 | 143005 4798 | 143006 4799 | 143007 4800 | 143008 4801 | 143009 4802 | 143010 4803 | 143011 4804 | 143012 4805 | 143013 4806 | 143015 4807 | 143016 4808 | 143017 4809 | 143019 4810 | 143020 4811 | 143021 4812 | 143023 4813 | 143024 4814 | 143025 4815 | 143027 4816 | 143028 4817 | 143030 4818 | 143031 4819 | 143032 4820 | 143033 4821 | 143034 4822 | 143035 4823 | 143036 4824 | 143037 4825 | 143038 4826 | 143039 4827 | 143040 4828 | 143041 4829 | 143042 4830 | 143043 4831 | 143044 4832 | 143045 4833 | 143047 4834 | 143048 4835 | 143049 4836 | 143050 4837 | 143051 4838 | 143052 4839 | 143053 4840 | 143054 4841 | 143055 4842 | 143056 4843 | 143057 4844 | 143058 4845 | 143059 4846 | 143060 4847 | 143061 4848 | 143062 4849 | 143064 4850 | 143065 4851 | 143066 4852 | 143067 4853 | 143068 4854 | 143069 4855 | 143070 4856 | 143071 4857 | 143075 4858 | 143076 4859 | 143077 4860 | 143079 4861 | 201000 4862 | 201001 4863 | 201002 4864 | 201003 4865 | 201004 4866 | 201005 4867 | 201008 4868 | 201009 4869 | 201010 4870 | 202001 4871 | 202003 4872 | 202007 4873 | 203016 4874 | 203017 4875 | 203018 4876 | 203040 4877 | 203041 4878 | 203042 4879 | 204001 4880 | 204002 4881 | 204003 4882 | 204004 4883 | 204007 4884 | 204014 4885 | 204028 4886 | 204091 4887 | 204182 4888 | 500058 4889 | 501000 4890 | 501001 4891 | 501002 4892 | 501005 4893 | 501006 4894 | 501007 4895 | 501008 4896 | 501009 4897 | 501010 4898 | 501011 4899 | 501012 4900 | 501015 4901 | 501017 4902 | 501018 4903 | 501019 4904 | 501020 4905 | 501021 4906 | 501022 4907 | 501023 4908 | 501025 4909 | 501026 4910 | 501028 4911 | 501029 4912 | 501030 4913 | 501031 4914 | 501032 4915 | 501050 4916 | 501300 4917 | 502000 4918 | 502001 4919 | 502002 4920 | 502003 4921 | 502004 4922 | 502005 4923 | 502006 4924 | 502007 4925 | 502008 4926 | 502010 4927 | 502011 4928 | 502012 4929 | 502013 4930 | 502014 4931 | 502015 4932 | 502016 4933 | 502017 4934 | 502018 4935 | 502020 4936 | 502021 4937 | 502022 4938 | 502023 4939 | 502024 4940 | 502025 4941 | 502026 4942 | 502027 4943 | 502028 4944 | 502030 4945 | 502031 4946 | 502032 4947 | 502036 4948 | 502037 4949 | 502038 4950 | 502040 4951 | 502041 4952 | 502042 4953 | 502048 4954 | 502049 4955 | 502050 4956 | 502053 4957 | 502054 4958 | 502055 4959 | 502056 4960 | 502057 4961 | 502058 4962 | 505888 4963 | 510010 4964 | 510020 4965 | 510030 4966 | 510050 4967 | 510060 4968 | 510070 4969 | 510090 4970 | 510110 4971 | 510120 4972 | 510130 4973 | 510150 4974 | 510160 4975 | 510170 4976 | 510180 4977 | 510190 4978 | 510210 4979 | 510220 4980 | 510230 4981 | 510260 4982 | 510270 4983 | 510280 4984 | 510290 4985 | 510300 4986 | 510310 4987 | 510330 4988 | 510360 4989 | 510410 4990 | 510420 4991 | 510430 4992 | 510440 4993 | 510500 4994 | 510510 4995 | 510520 4996 | 510560 4997 | 510580 4998 | 510630 4999 | 510650 5000 | 510660 5001 | 510680 5002 | 510710 5003 | 510810 5004 | 510880 5005 | 510900 5006 | 511010 5007 | 511210 5008 | 511220 5009 | 511230 5010 | 511600 5011 | 511650 5012 | 511660 5013 | 511680 5014 | 511690 5015 | 511700 5016 | 511760 5017 | 511770 5018 | 511800 5019 | 511810 5020 | 511820 5021 | 511830 5022 | 511850 5023 | 511860 5024 | 511880 5025 | 511890 5026 | 511900 5027 | 511910 5028 | 511920 5029 | 511930 5030 | 511950 5031 | 511960 5032 | 511970 5033 | 511980 5034 | 511990 5035 | 512000 5036 | 512010 5037 | 512070 5038 | 512100 5039 | 512120 5040 | 512210 5041 | 512220 5042 | 512230 5043 | 512300 5044 | 512310 5045 | 512330 5046 | 512340 5047 | 512500 5048 | 512510 5049 | 512580 5050 | 512600 5051 | 512610 5052 | 512640 5053 | 512660 5054 | 512680 5055 | 512810 5056 | 512880 5057 | 512900 5058 | 512990 5059 | 513030 5060 | 513050 5061 | 513100 5062 | 513500 5063 | 513600 5064 | 513660 5065 | 518800 5066 | 518880 5067 | 519001 5068 | 519002 5069 | 519003 5070 | 519005 5071 | 519007 5072 | 519008 5073 | 519011 5074 | 519013 5075 | 519015 5076 | 519017 5077 | 519018 5078 | 519019 5079 | 519020 5080 | 519021 5081 | 519023 5082 | 519025 5083 | 519026 5084 | 519027 5085 | 519028 5086 | 519029 5087 | 519030 5088 | 519032 5089 | 519033 5090 | 519034 5091 | 519035 5092 | 519039 5093 | 519050 5094 | 519056 5095 | 519060 5096 | 519061 5097 | 519062 5098 | 519066 5099 | 519068 5100 | 519069 5101 | 519078 5102 | 519087 5103 | 519089 5104 | 519093 5105 | 519095 5106 | 519097 5107 | 519099 5108 | 519100 5109 | 519110 5110 | 519111 5111 | 519112 5112 | 519113 5113 | 519115 5114 | 519116 5115 | 519117 5116 | 519118 5117 | 519119 5118 | 519120 5119 | 519121 5120 | 519122 5121 | 519123 5122 | 519124 5123 | 519125 5124 | 519126 5125 | 519127 5126 | 519128 5127 | 519129 5128 | 519130 5129 | 519132 5130 | 519133 5131 | 519134 5132 | 519135 5133 | 519136 5134 | 519137 5135 | 519138 5136 | 519150 5137 | 519152 5138 | 519153 5139 | 519156 5140 | 519158 5141 | 519160 5142 | 519161 5143 | 519162 5144 | 519163 5145 | 519165 5146 | 519167 5147 | 519170 5148 | 519171 5149 | 519172 5150 | 519173 5151 | 519175 5152 | 519180 5153 | 519181 5154 | 519183 5155 | 519185 5156 | 519186 5157 | 519188 5158 | 519189 5159 | 519190 5160 | 519191 5161 | 519192 5162 | 519193 5163 | 519195 5164 | 519196 5165 | 519197 5166 | 519198 5167 | 519199 5168 | 519206 5169 | 519207 5170 | 519208 5171 | 519209 5172 | 519210 5173 | 519211 5174 | 519230 5175 | 519300 5176 | 519320 5177 | 519321 5178 | 519326 5179 | 519327 5180 | 519505 5181 | 519506 5182 | 519507 5183 | 519508 5184 | 519509 5185 | 519510 5186 | 519511 5187 | 519512 5188 | 519518 5189 | 519519 5190 | 519566 5191 | 519567 5192 | 519598 5193 | 519599 5194 | 519606 5195 | 519610 5196 | 519611 5197 | 519613 5198 | 519614 5199 | 519616 5200 | 519617 5201 | 519619 5202 | 519620 5203 | 519622 5204 | 519623 5205 | 519624 5206 | 519625 5207 | 519626 5208 | 519627 5209 | 519628 5210 | 519629 5211 | 519630 5212 | 519631 5213 | 519633 5214 | 519634 5215 | 519640 5216 | 519641 5217 | 519642 5218 | 519644 5219 | 519649 5220 | 519650 5221 | 519651 5222 | 519652 5223 | 519653 5224 | 519654 5225 | 519655 5226 | 519656 5227 | 519657 5228 | 519660 5229 | 519661 5230 | 519662 5231 | 519663 5232 | 519664 5233 | 519665 5234 | 519666 5235 | 519668 5236 | 519669 5237 | 519670 5238 | 519671 5239 | 519672 5240 | 519673 5241 | 519674 5242 | 519675 5243 | 519676 5244 | 519677 5245 | 519678 5246 | 519679 5247 | 519680 5248 | 519683 5249 | 519688 5250 | 519690 5251 | 519692 5252 | 519698 5253 | 519700 5254 | 519702 5255 | 519704 5256 | 519706 5257 | 519712 5258 | 519714 5259 | 519718 5260 | 519723 5261 | 519727 5262 | 519733 5263 | 519734 5264 | 519735 5265 | 519800 5266 | 519801 5267 | 519808 5268 | 519809 5269 | 519858 5270 | 519859 5271 | 519878 5272 | 519879 5273 | 519888 5274 | 519889 5275 | 519898 5276 | 519899 5277 | 519908 5278 | 519909 5279 | 519915 5280 | 519918 5281 | 519929 5282 | 519933 5283 | 519935 5284 | 519937 5285 | 519940 5286 | 519941 5287 | 519942 5288 | 519943 5289 | 519944 5290 | 519945 5291 | 519947 5292 | 519949 5293 | 519951 5294 | 519956 5295 | 519957 5296 | 519959 5297 | 519961 5298 | 519963 5299 | 519965 5300 | 519967 5301 | 519969 5302 | 519971 5303 | 519972 5304 | 519973 5305 | 519975 5306 | 519976 5307 | 519977 5308 | 519979 5309 | 519983 5310 | 519985 5311 | 519987 5312 | 519989 5313 | 519991 5314 | 519993 5315 | 519995 5316 | 519997 5317 | 600000 5318 | 600004 5319 | 600006 5320 | 600007 5321 | 600008 5322 | 600009 5323 | 600010 5324 | 600011 5325 | 600012 5326 | 600015 5327 | 600016 5328 | 600017 5329 | 600018 5330 | 600019 5331 | 600020 5332 | 600021 5333 | 600022 5334 | 600023 5335 | 600026 5336 | 600027 5337 | 600028 5338 | 600029 5339 | 600030 5340 | 600031 5341 | 600033 5342 | 600035 5343 | 600036 5344 | 600037 5345 | 600038 5346 | 600039 5347 | 600048 5348 | 600050 5349 | 600051 5350 | 600052 5351 | 600053 5352 | 600054 5353 | 600055 5354 | 600056 5355 | 600057 5356 | 600058 5357 | 600059 5358 | 600060 5359 | 600061 5360 | 600062 5361 | 600063 5362 | 600064 5363 | 600066 5364 | 600067 5365 | 600068 5366 | 600069 5367 | 600070 5368 | 600071 5369 | 600072 5370 | 600073 5371 | 600074 5372 | 600075 5373 | 600076 5374 | 600077 5375 | 600078 5376 | 600079 5377 | 600080 5378 | 600081 5379 | 600082 5380 | 600083 5381 | 600084 5382 | 600085 5383 | 600086 5384 | 600088 5385 | 600089 5386 | 600090 5387 | 600091 5388 | 600093 5389 | 600094 5390 | 600095 5391 | 600096 5392 | 600097 5393 | 600098 5394 | 600099 5395 | 600100 5396 | 600101 5397 | 600103 5398 | 600104 5399 | 600105 5400 | 600106 5401 | 600107 5402 | 600108 5403 | 600109 5404 | 600110 5405 | 600111 5406 | 600112 5407 | 600113 5408 | 600114 5409 | 600115 5410 | 600116 5411 | 600117 5412 | 600118 5413 | 600119 5414 | 600120 5415 | 600121 5416 | 600122 5417 | 600123 5418 | 600125 5419 | 600126 5420 | 600127 5421 | 600128 5422 | 600129 5423 | 600130 5424 | 600131 5425 | 600132 5426 | 600133 5427 | 600135 5428 | 600136 5429 | 600137 5430 | 600138 5431 | 600139 5432 | 600141 5433 | 600143 5434 | 600145 5435 | 600146 5436 | 600148 5437 | 600149 5438 | 600150 5439 | 600151 5440 | 600152 5441 | 600153 5442 | 600155 5443 | 600156 5444 | 600157 5445 | 600158 5446 | 600159 5447 | 600160 5448 | 600161 5449 | 600162 5450 | 600163 5451 | 600165 5452 | 600166 5453 | 600167 5454 | 600168 5455 | 600169 5456 | 600170 5457 | 600171 5458 | 600172 5459 | 600173 5460 | 600175 5461 | 600176 5462 | 600177 5463 | 600178 5464 | 600179 5465 | 600180 5466 | 600182 5467 | 600183 5468 | 600184 5469 | 600185 5470 | 600186 5471 | 600187 5472 | 600188 5473 | 600189 5474 | 600190 5475 | 600191 5476 | 600192 5477 | 600193 5478 | 600195 5479 | 600196 5480 | 600197 5481 | 600198 5482 | 600199 5483 | 600200 5484 | 600201 5485 | 600202 5486 | 600203 5487 | 600206 5488 | 600207 5489 | 600208 5490 | 600209 5491 | 600210 5492 | 600211 5493 | 600212 5494 | 600213 5495 | 600215 5496 | 600216 5497 | 600217 5498 | 600218 5499 | 600219 5500 | 600220 5501 | 600221 5502 | 600222 5503 | 600223 5504 | 600225 5505 | 600226 5506 | 600227 5507 | 600228 5508 | 600229 5509 | 600230 5510 | 600231 5511 | 600232 5512 | 600233 5513 | 600234 5514 | 600235 5515 | 600236 5516 | 600237 5517 | 600238 5518 | 600239 5519 | 600240 5520 | 600241 5521 | 600242 5522 | 600243 5523 | 600246 5524 | 600247 5525 | 600248 5526 | 600249 5527 | 600250 5528 | 600251 5529 | 600252 5530 | 600255 5531 | 600256 5532 | 600257 5533 | 600258 5534 | 600259 5535 | 600260 5536 | 600261 5537 | 600262 5538 | 600265 5539 | 600266 5540 | 600267 5541 | 600268 5542 | 600269 5543 | 600270 5544 | 600271 5545 | 600272 5546 | 600273 5547 | 600275 5548 | 600276 5549 | 600277 5550 | 600278 5551 | 600279 5552 | 600280 5553 | 600281 5554 | 600282 5555 | 600283 5556 | 600284 5557 | 600285 5558 | 600287 5559 | 600288 5560 | 600289 5561 | 600290 5562 | 600291 5563 | 600292 5564 | 600293 5565 | 600295 5566 | 600297 5567 | 600298 5568 | 600299 5569 | 600300 5570 | 600301 5571 | 600302 5572 | 600303 5573 | 600305 5574 | 600306 5575 | 600307 5576 | 600308 5577 | 600309 5578 | 600310 5579 | 600311 5580 | 600312 5581 | 600313 5582 | 600315 5583 | 600316 5584 | 600317 5585 | 600318 5586 | 600319 5587 | 600320 5588 | 600321 5589 | 600322 5590 | 600323 5591 | 600325 5592 | 600326 5593 | 600327 5594 | 600328 5595 | 600329 5596 | 600330 5597 | 600331 5598 | 600332 5599 | 600333 5600 | 600335 5601 | 600336 5602 | 600337 5603 | 600338 5604 | 600339 5605 | 600340 5606 | 600343 5607 | 600345 5608 | 600346 5609 | 600348 5610 | 600350 5611 | 600351 5612 | 600352 5613 | 600353 5614 | 600354 5615 | 600355 5616 | 600356 5617 | 600358 5618 | 600359 5619 | 600360 5620 | 600361 5621 | 600362 5622 | 600363 5623 | 600365 5624 | 600366 5625 | 600367 5626 | 600368 5627 | 600369 5628 | 600370 5629 | 600371 5630 | 600372 5631 | 600373 5632 | 600375 5633 | 600376 5634 | 600377 5635 | 600378 5636 | 600379 5637 | 600380 5638 | 600381 5639 | 600382 5640 | 600383 5641 | 600385 5642 | 600386 5643 | 600387 5644 | 600388 5645 | 600389 5646 | 600390 5647 | 600391 5648 | 600392 5649 | 600393 5650 | 600395 5651 | 600396 5652 | 600397 5653 | 600398 5654 | 600399 5655 | 600400 5656 | 600401 5657 | 600403 5658 | 600405 5659 | 600406 5660 | 600408 5661 | 600409 5662 | 600410 5663 | 600415 5664 | 600416 5665 | 600418 5666 | 600419 5667 | 600420 5668 | 600421 5669 | 600422 5670 | 600423 5671 | 600425 5672 | 600426 5673 | 600428 5674 | 600429 5675 | 600432 5676 | 600433 5677 | 600435 5678 | 600436 5679 | 600438 5680 | 600439 5681 | 600444 5682 | 600446 5683 | 600448 5684 | 600449 5685 | 600452 5686 | 600455 5687 | 600456 5688 | 600458 5689 | 600459 5690 | 600460 5691 | 600461 5692 | 600462 5693 | 600463 5694 | 600466 5695 | 600467 5696 | 600468 5697 | 600469 5698 | 600470 5699 | 600475 5700 | 600476 5701 | 600477 5702 | 600478 5703 | 600479 5704 | 600480 5705 | 600481 5706 | 600482 5707 | 600483 5708 | 600485 5709 | 600486 5710 | 600487 5711 | 600488 5712 | 600489 5713 | 600490 5714 | 600491 5715 | 600493 5716 | 600495 5717 | 600496 5718 | 600497 5719 | 600498 5720 | 600499 5721 | 600500 5722 | 600501 5723 | 600502 5724 | 600503 5725 | 600505 5726 | 600506 5727 | 600507 5728 | 600508 5729 | 600509 5730 | 600510 5731 | 600511 5732 | 600512 5733 | 600513 5734 | 600515 5735 | 600516 5736 | 600517 5737 | 600518 5738 | 600519 5739 | 600520 5740 | 600521 5741 | 600522 5742 | 600523 5743 | 600525 5744 | 600526 5745 | 600527 5746 | 600528 5747 | 600529 5748 | 600530 5749 | 600531 5750 | 600532 5751 | 600533 5752 | 600535 5753 | 600536 5754 | 600537 5755 | 600538 5756 | 600539 5757 | 600540 5758 | 600543 5759 | 600545 5760 | 600546 5761 | 600547 5762 | 600548 5763 | 600549 5764 | 600550 5765 | 600551 5766 | 600552 5767 | 600555 5768 | 600556 5769 | 600557 5770 | 600558 5771 | 600559 5772 | 600560 5773 | 600561 5774 | 600562 5775 | 600563 5776 | 600565 5777 | 600566 5778 | 600567 5779 | 600568 5780 | 600569 5781 | 600570 5782 | 600571 5783 | 600572 5784 | 600573 5785 | 600575 5786 | 600576 5787 | 600577 5788 | 600578 5789 | 600579 5790 | 600580 5791 | 600581 5792 | 600582 5793 | 600583 5794 | 600584 5795 | 600585 5796 | 600586 5797 | 600587 5798 | 600588 5799 | 600589 5800 | 600590 5801 | 600592 5802 | 600593 5803 | 600594 5804 | 600595 5805 | 600596 5806 | 600597 5807 | 600598 5808 | 600599 5809 | 600600 5810 | 600601 5811 | 600602 5812 | 600603 5813 | 600604 5814 | 600605 5815 | 600606 5816 | 600608 5817 | 600609 5818 | 600610 5819 | 600611 5820 | 600612 5821 | 600613 5822 | 600614 5823 | 600615 5824 | 600616 5825 | 600617 5826 | 600618 5827 | 600619 5828 | 600620 5829 | 600621 5830 | 600622 5831 | 600623 5832 | 600624 5833 | 600626 5834 | 600628 5835 | 600629 5836 | 600630 5837 | 600633 5838 | 600634 5839 | 600635 5840 | 600636 5841 | 600637 5842 | 600638 5843 | 600639 5844 | 600640 5845 | 600641 5846 | 600642 5847 | 600643 5848 | 600644 5849 | 600645 5850 | 600647 5851 | 600648 5852 | 600649 5853 | 600650 5854 | 600651 5855 | 600652 5856 | 600653 5857 | 600654 5858 | 600655 5859 | 600657 5860 | 600658 5861 | 600660 5862 | 600661 5863 | 600662 5864 | 600663 5865 | 600664 5866 | 600665 5867 | 600666 5868 | 600667 5869 | 600668 5870 | 600671 5871 | 600673 5872 | 600674 5873 | 600675 5874 | 600676 5875 | 600677 5876 | 600678 5877 | 600679 5878 | 600680 5879 | 600681 5880 | 600682 5881 | 600683 5882 | 600684 5883 | 600685 5884 | 600686 5885 | 600687 5886 | 600688 5887 | 600689 5888 | 600690 5889 | 600691 5890 | 600692 5891 | 600693 5892 | 600694 5893 | 600695 5894 | 600696 5895 | 600697 5896 | 600698 5897 | 600699 5898 | 600701 5899 | 600702 5900 | 600703 5901 | 600704 5902 | 600705 5903 | 600706 5904 | 600707 5905 | 600708 5906 | 600710 5907 | 600711 5908 | 600712 5909 | 600713 5910 | 600714 5911 | 600715 5912 | 600716 5913 | 600717 5914 | 600718 5915 | 600719 5916 | 600720 5917 | 600721 5918 | 600722 5919 | 600723 5920 | 600724 5921 | 600725 5922 | 600726 5923 | 600727 5924 | 600728 5925 | 600729 5926 | 600730 5927 | 600731 5928 | 600732 5929 | 600733 5930 | 600734 5931 | 600735 5932 | 600736 5933 | 600737 5934 | 600738 5935 | 600739 5936 | 600740 5937 | 600741 5938 | 600742 5939 | 600743 5940 | 600744 5941 | 600745 5942 | 600746 5943 | 600747 5944 | 600748 5945 | 600749 5946 | 600750 5947 | 600751 5948 | 600753 5949 | 600754 5950 | 600755 5951 | 600756 5952 | 600757 5953 | 600758 5954 | 600759 5955 | 600760 5956 | 600761 5957 | 600763 5958 | 600764 5959 | 600765 5960 | 600766 5961 | 600767 5962 | 600768 5963 | 600769 5964 | 600770 5965 | 600771 5966 | 600773 5967 | 600774 5968 | 600775 5969 | 600776 5970 | 600777 5971 | 600778 5972 | 600779 5973 | 600780 5974 | 600781 5975 | 600782 5976 | 600783 5977 | 600784 5978 | 600785 5979 | 600787 5980 | 600789 5981 | 600790 5982 | 600791 5983 | 600792 5984 | 600793 5985 | 600794 5986 | 600795 5987 | 600796 5988 | 600797 5989 | 600798 5990 | 600800 5991 | 600801 5992 | 600802 5993 | 600803 5994 | 600804 5995 | 600805 5996 | 600806 5997 | 600807 5998 | 600808 5999 | 600809 6000 | 600810 6001 | 600811 6002 | 600812 6003 | 600814 6004 | 600815 6005 | 600816 6006 | 600817 6007 | 600818 6008 | 600819 6009 | 600820 6010 | 600821 6011 | 600822 6012 | 600823 6013 | 600824 6014 | 600825 6015 | 600826 6016 | 600827 6017 | 600828 6018 | 600829 6019 | 600830 6020 | 600831 6021 | 600833 6022 | 600834 6023 | 600835 6024 | 600836 6025 | 600837 6026 | 600838 6027 | 600839 6028 | 600841 6029 | 600843 6030 | 600844 6031 | 600845 6032 | 600846 6033 | 600847 6034 | 600848 6035 | 600850 6036 | 600851 6037 | 600853 6038 | 600854 6039 | 600855 6040 | 600856 6041 | 600857 6042 | 600858 6043 | 600859 6044 | 600860 6045 | 600861 6046 | 600862 6047 | 600863 6048 | 600864 6049 | 600865 6050 | 600866 6051 | 600867 6052 | 600868 6053 | 600869 6054 | 600870 6055 | 600871 6056 | 600872 6057 | 600873 6058 | 600874 6059 | 600875 6060 | 600876 6061 | 600877 6062 | 600879 6063 | 600880 6064 | 600881 6065 | 600882 6066 | 600883 6067 | 600884 6068 | 600885 6069 | 600886 6070 | 600887 6071 | 600888 6072 | 600889 6073 | 600890 6074 | 600891 6075 | 600892 6076 | 600893 6077 | 600894 6078 | 600895 6079 | 600896 6080 | 600897 6081 | 600898 6082 | 600900 6083 | 600908 6084 | 600909 6085 | 600917 6086 | 600919 6087 | 600926 6088 | 600936 6089 | 600939 6090 | 600958 6091 | 600959 6092 | 600960 6093 | 600961 6094 | 600962 6095 | 600963 6096 | 600965 6097 | 600966 6098 | 600967 6099 | 600969 6100 | 600970 6101 | 600971 6102 | 600973 6103 | 600975 6104 | 600976 6105 | 600977 6106 | 600978 6107 | 600979 6108 | 600980 6109 | 600981 6110 | 600982 6111 | 600983 6112 | 600984 6113 | 600985 6114 | 600986 6115 | 600987 6116 | 600988 6117 | 600990 6118 | 600992 6119 | 600993 6120 | 600995 6121 | 600996 6122 | 600997 6123 | 600998 6124 | 600999 6125 | 601000 6126 | 601001 6127 | 601002 6128 | 601003 6129 | 601005 6130 | 601006 6131 | 601007 6132 | 601008 6133 | 601009 6134 | 601010 6135 | 601011 6136 | 601012 6137 | 601015 6138 | 601016 6139 | 601018 6140 | 601020 6141 | 601021 6142 | 601028 6143 | 601038 6144 | 601058 6145 | 601069 6146 | 601088 6147 | 601098 6148 | 601099 6149 | 601100 6150 | 601101 6151 | 601106 6152 | 601107 6153 | 601111 6154 | 601113 6155 | 601116 6156 | 601117 6157 | 601118 6158 | 601126 6159 | 601127 6160 | 601128 6161 | 601137 6162 | 601139 6163 | 601155 6164 | 601158 6165 | 601163 6166 | 601166 6167 | 601168 6168 | 601169 6169 | 601177 6170 | 601179 6171 | 601186 6172 | 601188 6173 | 601198 6174 | 601199 6175 | 601200 6176 | 601208 6177 | 601211 6178 | 601212 6179 | 601216 6180 | 601218 6181 | 601222 6182 | 601225 6183 | 601226 6184 | 601228 6185 | 601229 6186 | 601231 6187 | 601233 6188 | 601238 6189 | 601258 6190 | 601288 6191 | 601311 6192 | 601313 6193 | 601318 6194 | 601328 6195 | 601333 6196 | 601336 6197 | 601339 6198 | 601366 6199 | 601368 6200 | 601369 6201 | 601375 6202 | 601377 6203 | 601388 6204 | 601390 6205 | 601398 6206 | 601500 6207 | 601515 6208 | 601518 6209 | 601519 6210 | 601555 6211 | 601558 6212 | 601566 6213 | 601567 6214 | 601579 6215 | 601588 6216 | 601595 6217 | 601599 6218 | 601600 6219 | 601601 6220 | 601607 6221 | 601608 6222 | 601611 6223 | 601616 6224 | 601618 6225 | 601628 6226 | 601633 6227 | 601636 6228 | 601666 6229 | 601668 6230 | 601669 6231 | 601677 6232 | 601678 6233 | 601688 6234 | 601689 6235 | 601699 6236 | 601700 6237 | 601717 6238 | 601718 6239 | 601727 6240 | 601766 6241 | 601777 6242 | 601788 6243 | 601789 6244 | 601798 6245 | 601799 6246 | 601800 6247 | 601801 6248 | 601808 6249 | 601811 6250 | 601818 6251 | 601857 6252 | 601858 6253 | 601866 6254 | 601872 6255 | 601877 6256 | 601880 6257 | 601881 6258 | 601882 6259 | 601886 6260 | 601888 6261 | 601890 6262 | 601898 6263 | 601899 6264 | 601900 6265 | 601901 6266 | 601908 6267 | 601918 6268 | 601919 6269 | 601928 6270 | 601929 6271 | 601933 6272 | 601939 6273 | 601958 6274 | 601965 6275 | 601966 6276 | 601968 6277 | 601969 6278 | 601985 6279 | 601988 6280 | 601989 6281 | 601991 6282 | 601992 6283 | 601996 6284 | 601997 6285 | 601998 6286 | 601999 6287 | 603000 6288 | 603001 6289 | 603002 6290 | 603003 6291 | 603005 6292 | 603006 6293 | 603007 6294 | 603008 6295 | 603009 6296 | 603010 6297 | 603011 6298 | 603012 6299 | 603015 6300 | 603016 6301 | 603017 6302 | 603018 6303 | 603019 6304 | 603020 6305 | 603021 6306 | 603022 6307 | 603023 6308 | 603025 6309 | 603026 6310 | 603027 6311 | 603028 6312 | 603029 6313 | 603030 6314 | 603031 6315 | 603032 6316 | 603033 6317 | 603035 6318 | 603036 6319 | 603037 6320 | 603038 6321 | 603039 6322 | 603040 6323 | 603041 6324 | 603050 6325 | 603058 6326 | 603060 6327 | 603066 6328 | 603067 6329 | 603069 6330 | 603077 6331 | 603078 6332 | 603081 6333 | 603085 6334 | 603088 6335 | 603089 6336 | 603090 6337 | 603096 6338 | 603098 6339 | 603099 6340 | 603100 6341 | 603101 6342 | 603108 6343 | 603111 6344 | 603116 6345 | 603117 6346 | 603118 6347 | 603123 6348 | 603126 6349 | 603128 6350 | 603131 6351 | 603133 6352 | 603138 6353 | 603139 6354 | 603158 6355 | 603159 6356 | 603160 6357 | 603165 6358 | 603166 6359 | 603167 6360 | 603168 6361 | 603169 6362 | 603177 6363 | 603178 6364 | 603179 6365 | 603186 6366 | 603188 6367 | 603189 6368 | 603198 6369 | 603199 6370 | 603203 6371 | 603208 6372 | 603218 6373 | 603222 6374 | 603223 6375 | 603225 6376 | 603227 6377 | 603228 6378 | 603232 6379 | 603238 6380 | 603239 6381 | 603258 6382 | 603266 6383 | 603268 6384 | 603288 6385 | 603298 6386 | 603299 6387 | 603300 6388 | 603303 6389 | 603306 6390 | 603308 6391 | 603309 6392 | 603311 6393 | 603313 6394 | 603315 6395 | 603318 6396 | 603319 6397 | 603320 6398 | 603322 6399 | 603323 6400 | 603328 6401 | 603330 6402 | 603333 6403 | 603336 6404 | 603337 6405 | 603338 6406 | 603339 6407 | 603345 6408 | 603355 6409 | 603358 6410 | 603360 6411 | 603366 6412 | 603368 6413 | 603369 6414 | 603377 6415 | 603385 6416 | 603388 6417 | 603389 6418 | 603393 6419 | 603398 6420 | 603399 6421 | 603416 6422 | 603421 6423 | 603429 6424 | 603444 6425 | 603456 6426 | 603505 6427 | 603508 6428 | 603515 6429 | 603517 6430 | 603518 6431 | 603519 6432 | 603520 6433 | 603528 6434 | 603538 6435 | 603555 6436 | 603556 6437 | 603558 6438 | 603559 6439 | 603566 6440 | 603567 6441 | 603568 6442 | 603569 6443 | 603577 6444 | 603578 6445 | 603579 6446 | 603585 6447 | 603586 6448 | 603588 6449 | 603589 6450 | 603598 6451 | 603599 6452 | 603600 6453 | 603601 6454 | 603603 6455 | 603606 6456 | 603608 6457 | 603609 6458 | 603611 6459 | 603615 6460 | 603616 6461 | 603618 6462 | 603626 6463 | 603628 6464 | 603630 6465 | 603633 6466 | 603636 6467 | 603637 6468 | 603638 6469 | 603639 6470 | 603656 6471 | 603658 6472 | 603660 6473 | 603663 6474 | 603665 6475 | 603667 6476 | 603668 6477 | 603669 6478 | 603677 6479 | 603678 6480 | 603686 6481 | 603688 6482 | 603689 6483 | 603690 6484 | 603696 6485 | 603698 6486 | 603699 6487 | 603701 6488 | 603703 6489 | 603708 6490 | 603716 6491 | 603717 6492 | 603718 6493 | 603726 6494 | 603727 6495 | 603729 6496 | 603737 6497 | 603738 6498 | 603766 6499 | 603768 6500 | 603777 6501 | 603778 6502 | 603779 6503 | 603787 6504 | 603788 6505 | 603789 6506 | 603797 6507 | 603798 6508 | 603799 6509 | 603800 6510 | 603803 6511 | 603806 6512 | 603808 6513 | 603811 6514 | 603816 6515 | 603817 6516 | 603818 6517 | 603819 6518 | 603822 6519 | 603823 6520 | 603826 6521 | 603828 6522 | 603833 6523 | 603838 6524 | 603839 6525 | 603843 6526 | 603858 6527 | 603859 6528 | 603861 6529 | 603866 6530 | 603868 6531 | 603869 6532 | 603877 6533 | 603878 6534 | 603881 6535 | 603883 6536 | 603885 6537 | 603886 6538 | 603887 6539 | 603888 6540 | 603889 6541 | 603898 6542 | 603899 6543 | 603900 6544 | 603901 6545 | 603903 6546 | 603906 6547 | 603908 6548 | 603909 6549 | 603918 6550 | 603919 6551 | 603920 6552 | 603928 6553 | 603929 6554 | 603936 6555 | 603939 6556 | 603955 6557 | 603958 6558 | 603959 6559 | 603960 6560 | 603966 6561 | 603968 6562 | 603969 6563 | 603977 6564 | 603979 6565 | 603986 6566 | 603987 6567 | 603988 6568 | 603989 6569 | 603990 6570 | 603991 6571 | 603993 6572 | 603996 6573 | 603997 6574 | 603998 6575 | 603999 6576 | 751001 6577 | 751002 6578 | 751003 6579 | 751004 6580 | 751005 6581 | 751006 6582 | 751007 6583 | 751008 6584 | 751009 6585 | 751010 6586 | 751011 6587 | 751012 6588 | 751013 6589 | 751014 6590 | 751015 6591 | 751016 6592 | 751017 6593 | 751018 6594 | 751019 6595 | 751020 6596 | 751021 6597 | 751022 6598 | 751023 6599 | 751024 6600 | 751025 6601 | 751026 6602 | 751028 6603 | 751029 6604 | 751030 6605 | 751031 6606 | 751032 6607 | 751034 6608 | 751035 6609 | 751036 6610 | 751037 6611 | 751038 6612 | 751039 6613 | 751040 6614 | 751041 6615 | 751043 6616 | 751044 6617 | 751046 6618 | 751047 6619 | 751048 6620 | 751052 6621 | 751053 6622 | 751054 6623 | 751057 6624 | 751058 6625 | 751059 6626 | 751060 6627 | 751061 6628 | 751062 6629 | 751063 6630 | 751065 6631 | 751066 6632 | 751067 6633 | 751068 6634 | 751069 6635 | 751071 6636 | 751072 6637 | 751073 6638 | 751074 6639 | 751075 6640 | 751076 6641 | 751077 6642 | 751078 6643 | 751079 6644 | 751080 6645 | 751081 6646 | 751082 6647 | 751083 6648 | 751084 6649 | 751085 6650 | 751086 6651 | 751087 6652 | 751088 6653 | 751090 6654 | 751091 6655 | 751092 6656 | 751093 6657 | 751095 6658 | 751096 6659 | 751097 6660 | 751098 6661 | 751099 6662 | 751100 6663 | 751101 6664 | 751102 6665 | 751103 6666 | 751104 6667 | 751106 6668 | 751107 6669 | 751108 6670 | 751109 6671 | 751110 6672 | 751111 6673 | 751112 6674 | 751113 6675 | 751114 6676 | 751115 6677 | 751121 6678 | 751122 6679 | 751123 6680 | 751124 6681 | 751200 6682 | 751201 6683 | 751204 6684 | 751205 6685 | 751208 6686 | 751209 6687 | 751212 6688 | 751213 6689 | 751216 6690 | 751217 6691 | 751220 6692 | 751221 6693 | 751224 6694 | 751225 6695 | 751228 6696 | 751229 6697 | 751232 6698 | 751233 6699 | 751236 6700 | 751237 6701 | 751240 6702 | 751241 6703 | 751244 6704 | 751245 6705 | 751248 6706 | 751249 6707 | 751252 6708 | 751253 6709 | 751256 6710 | 751257 6711 | 751260 6712 | 751261 6713 | 751264 6714 | 751265 6715 | 751268 6716 | 751269 6717 | 751272 6718 | 751273 6719 | 751276 6720 | 751277 6721 | 751280 6722 | 751281 6723 | 751284 6724 | 751285 6725 | 751288 6726 | 751289 6727 | 751292 6728 | 751293 6729 | 751296 6730 | 751297 6731 | 751300 6732 | 751301 6733 | 751304 6734 | 751305 6735 | 751308 6736 | 751309 6737 | 751312 6738 | 751313 6739 | 751316 6740 | 751317 6741 | 751320 6742 | 751321 6743 | 751324 6744 | 751325 6745 | 751328 6746 | 751329 6747 | 751332 6748 | 751333 6749 | 751336 6750 | 751337 6751 | 751340 6752 | 751341 6753 | 751344 6754 | 751345 6755 | 751348 6756 | 751349 6757 | 751352 6758 | 751353 6759 | 751356 6760 | 751357 6761 | 751360 6762 | 751361 6763 | 751364 6764 | 751365 6765 | 751368 6766 | 751369 6767 | 751372 6768 | 751373 6769 | 751376 6770 | 751377 6771 | 751380 6772 | 751381 6773 | 751384 6774 | 751385 6775 | 751400 6776 | 751403 6777 | 751405 6778 | 751409 6779 | 751411 6780 | 751424 6781 | 751426 6782 | 751428 6783 | 751430 6784 | 751435 6785 | 751439 6786 | 751441 6787 | 751454 6788 | 751456 6789 | 751458 6790 | 751460 6791 | 751465 6792 | 751469 6793 | 751471 6794 | 751484 6795 | 751485 6796 | 751486 6797 | 751488 6798 | 751490 6799 | 751495 6800 | 751499 6801 | 751501 6802 | 751514 6803 | 751515 6804 | 751516 6805 | 751518 6806 | 751850 6807 | 751851 6808 | 751900 6809 | 751901 6810 | 751902 6811 | 751903 6812 | 751904 6813 | 751905 6814 | 751906 6815 | 751907 6816 | 751908 6817 | 751909 6818 | 751910 6819 | 751911 6820 | 751917 6821 | 751918 6822 | 751920 6823 | 751924 6824 | 751925 6825 | 751926 6826 | 751927 6827 | 751930 6828 | 751933 6829 | 751935 6830 | 751936 6831 | 751940 6832 | 751941 6833 | 751948 6834 | 751949 6835 | 751956 6836 | 751968 6837 | 751970 6838 | 751971 6839 | 751972 6840 | 751973 6841 | 751974 6842 | 751975 6843 | 751976 6844 | 751977 6845 | 751978 6846 | 751979 6847 | 751980 6848 | 751981 6849 | 751982 6850 | 751983 6851 | 751984 6852 | 751985 6853 | 751986 6854 | 751987 6855 | 751988 6856 | 751989 6857 | 751990 6858 | 751991 6859 | 751992 6860 | 751993 6861 | 751994 6862 | 751995 6863 | 751996 6864 | 751997 6865 | 751998 6866 | 751999 6867 | 888880 6868 | 900901 6869 | 900902 6870 | 900903 6871 | 900904 6872 | 900905 6873 | 900906 6874 | 900907 6875 | 900908 6876 | 900909 6877 | 900910 6878 | 900911 6879 | 900912 6880 | 900913 6881 | 900914 6882 | 900915 6883 | 900916 6884 | 900917 6885 | 900918 6886 | 900919 6887 | 900920 6888 | 900921 6889 | 900922 6890 | 900923 6891 | 900924 6892 | 900925 6893 | 900926 6894 | 900927 6895 | 900928 6896 | 900929 6897 | 900930 6898 | 900932 6899 | 900933 6900 | 900934 6901 | 900936 6902 | 900937 6903 | 900938 6904 | 900939 6905 | 900940 6906 | 900941 6907 | 900942 6908 | 900943 6909 | 900945 6910 | 900946 6911 | 900947 6912 | 900948 6913 | 900951 6914 | 900952 6915 | 900953 6916 | 900955 6917 | 900956 6918 | 900957 6919 | 205001 6920 | 205003 6921 | 205007 6922 | 205008 6923 | 205010 6924 | 205021 6925 | 205030 6926 | 205035 6927 | 205042 6928 | 205063 6929 | 205119 6930 | 205154 6931 | 205182 6932 | 205210 6933 | 205245 6934 | 205273 6935 | 205301 6936 | 205357 6937 | 360001 6938 | 360002 6939 | 360003 6940 | 360005 6941 | 360006 6942 | 360007 6943 | 360008 6944 | 360009 6945 | 360010 6946 | 360011 6947 | 360012 6948 | 360013 6949 | 360014 6950 | 360015 6951 | 360016 6952 | 360017 6953 | 360018 6954 | 360019 6955 | 360020 6956 | 360021 6957 | 360022 6958 | 360023 6959 | 360024 6960 | 360025 6961 | 751800 6962 | 751801 6963 | 751803 6964 | 751805 6965 | 751807 6966 | 751810 6967 | 751811 6968 | 751812 6969 | 751813 6970 | 751815 6971 | 751817 6972 | -------------------------------------------------------------------------------- /LTS_API/LTS_ns.h: -------------------------------------------------------------------------------- 1 | #ifndef _LTS_NAMESPACE_H 2 | #define _LTS_NAMESPACE_H 3 | 4 | #define _LTS_NS_ _LTS_ 5 | #define _LTS_NS_BEGIN_ namespace _LTS_{ 6 | #define _LTS_NS_END_ } 7 | #define _USING_LTS_NS_ using namespace _LTS_; 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /LTS_API/SecurityFtdcL2MDUserApi.h: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////// 2 | ///@company shanghai liber information Technology Co.,Ltd 3 | ///@file SecurityFtdcL2MDUserApi.h 4 | ///@brief 定义客户端接口 5 | ///////////////////////////////////////////////////////////////////////// 6 | 7 | #if !defined(SECURITY_L2MD_FTDCUSERAPI_H) 8 | #define SECURITY_L2MD_FTDCUSERAPI_H 9 | 10 | #if _MSC_VER > 1000 11 | #pragma once 12 | #endif // _MSC_VER > 1000 13 | 14 | #include "SecurityFtdcL2MDUserApiStruct.h" 15 | 16 | _LTS_NS_BEGIN_ 17 | #if defined(L2MD_USERAPI_IS_LIB) && defined(WINDOWS) 18 | #ifdef LIB_L2MD_USER_API_EXPORT 19 | #define L2MD_USER_API_EXPORT __declspec(dllexport) 20 | #else 21 | #define L2MD_USER_API_EXPORT __declspec(dllimport) 22 | #endif 23 | #else 24 | #define L2MD_USER_API_EXPORT 25 | #endif 26 | 27 | class CSecurityFtdcL2MDUserSpi 28 | { 29 | public: 30 | ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 31 | virtual void OnFrontConnected(){}; 32 | 33 | ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 34 | ///@param nReason 错误原因 35 | /// 0x1001 网络读失败 36 | /// 0x1002 网络写失败 37 | /// 0x2001 接收心跳超时 38 | /// 0x2002 发送心跳失败 39 | /// 0x2003 收到错误报文 40 | virtual void OnFrontDisconnected(int nReason){}; 41 | 42 | ///心跳超时警告 43 | virtual void OnHeartBeatWarning(int nTimeLapse){}; 44 | 45 | ///错误应答 46 | virtual void OnRspError(CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 47 | 48 | ///登录请求响应 49 | virtual void OnRspUserLogin(CSecurityFtdcUserLoginField *pUserLogin, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 50 | 51 | ///登出请求响应 52 | virtual void OnRspUserLogout(CSecurityFtdcUserLogoutField *pUserLogout, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 53 | 54 | ///订阅Level2行情应答 55 | virtual void OnRspSubL2MarketData(CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 56 | 57 | ///取消订阅Level2行情应答 58 | virtual void OnRspUnSubL2MarketData(CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 59 | 60 | ///订阅Level2指数行情应答 61 | virtual void OnRspSubL2Index(CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 62 | 63 | ///取消订阅Level2指数行情应答 64 | virtual void OnRspUnSubL2Index(CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 65 | 66 | ///Level2行情通知 67 | virtual void OnRtnL2MarketData(CSecurityFtdcL2MarketDataField *pL2MarketData) {}; 68 | 69 | ///Level2指数行情通知 70 | virtual void OnRtnL2Index(CSecurityFtdcL2IndexField *pL2Index) {}; 71 | 72 | ///订阅逐笔委托及成交应答 73 | virtual void OnRspSubL2OrderAndTrade(CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 74 | 75 | ///取消订阅逐笔委托及成交应答 76 | virtual void OnRspUnSubL2OrderAndTrade(CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 77 | 78 | ///Level2委托通知 79 | virtual void OnRtnL2Order(CSecurityFtdcL2OrderField *pL2Order) {}; 80 | 81 | ///Level2成交通知 82 | virtual void OnRtnL2Trade(CSecurityFtdcL2TradeField *pL2Trade) {}; 83 | 84 | ///通知清理SSE买卖一队列中数量为0的报单 85 | virtual void OnNtfCheckOrderList(TSecurityFtdcInstrumentIDType InstrumentID, TSecurityFtdcFunctionCodeType FunctionCode) {}; 86 | }; 87 | 88 | #ifndef WINDOWS 89 | #if __GNUC__ >= 4 90 | #pragma GCC visibility push(default) 91 | #endif 92 | #endif 93 | class L2MD_USER_API_EXPORT CSecurityFtdcL2MDUserApi 94 | { 95 | public: 96 | ///创建UserApi 97 | static CSecurityFtdcL2MDUserApi *CreateFtdcL2MDUserApi(const bool bIsMulticast=false); 98 | 99 | ///删除接口对象本身 100 | ///@remark 不再使用本接口对象时,调用该函数删除接口对象 101 | virtual void Release() = 0; 102 | 103 | ///初始化 104 | ///@remark 初始化运行环境,只有调用后,接口才开始工作 105 | virtual void Init() = 0; 106 | 107 | ///等待接口线程结束运行 108 | virtual int Join() = 0; 109 | 110 | ///获取当前交易日 111 | ///@remark 只有登录成功后,才能得到正确的交易日 112 | virtual const char *GetTradingDay() = 0; 113 | 114 | ///注册前置机网络地址 115 | ///@param pszFrontAddress:前置机网络地址。 116 | ///@remark 网络地址的格式为:“protocol://ipaddress:port”,如:”tcp://127.0.0.1:17001”。 117 | ///@remark “tcp”代表传输协议,“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。 118 | virtual void RegisterFront(char *pszFrontAddress) = 0; 119 | 120 | ///注册回调接口 121 | ///@param pSpi 派生自回调接口类的实例 122 | virtual void RegisterSpi(CSecurityFtdcL2MDUserSpi *pSpi) = 0; 123 | 124 | virtual int SubscribeL2MarketData(char *ppInstrumentID[], int nCount, char* pExchageID) = 0; 125 | 126 | virtual int UnSubscribeL2MarketData(char *ppInstrumentID[], int nCount, char* pExchageID) = 0; 127 | 128 | virtual int SubscribeL2Index(char *ppInstrumentID[], int nCount, char* pExchageID) = 0; 129 | 130 | virtual int UnSubscribeL2Index(char *ppInstrumentID[], int nCount, char* pExchageID) = 0; 131 | 132 | virtual int SubscribeL2OrderAndTrade() = 0; 133 | 134 | virtual int UnSubscribeL2OrderAndTrade() = 0; 135 | 136 | ///登录请求 137 | virtual int ReqUserLogin(CSecurityFtdcUserLoginField *pUserLogin, int nRequestID) = 0; 138 | 139 | ///登出请求 140 | virtual int ReqUserLogout(CSecurityFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; 141 | protected: 142 | ~CSecurityFtdcL2MDUserApi(){}; 143 | }; 144 | #ifndef WINDOWS 145 | #if __GNUC__ >= 4 146 | #pragma GCC visibility pop 147 | #endif 148 | #endif 149 | _LTS_NS_END_ 150 | #endif 151 | -------------------------------------------------------------------------------- /LTS_API/SecurityFtdcL2MDUserApiDataType.h: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////// 2 | ///@company shanghai liber information Technology Co.,Ltd 3 | ///@file SecurityFtdcL2MDUserApiDataType.h 4 | ///@brief 定义业务数据类型 5 | ///////////////////////////////////////////////////////////////////////// 6 | 7 | #ifndef SECURITY_L2MD_FTDCDATATYPE_H 8 | #define SECURITY_L2MD_FTDCDATATYPE_H 9 | 10 | #include "LTS_ns.h" 11 | 12 | _LTS_NS_BEGIN_ 13 | 14 | ///////////////////////////////////////////////////////////////////////// 15 | ///TFtdcErrorIDType是一个错误代码类型 16 | ///////////////////////////////////////////////////////////////////////// 17 | typedef int TSecurityFtdcErrorIDType; 18 | 19 | ///////////////////////////////////////////////////////////////////////// 20 | ///TFtdcErrorMsgType是一个错误信息类型 21 | ///////////////////////////////////////////////////////////////////////// 22 | typedef char TSecurityFtdcErrorMsgType[81]; 23 | 24 | ///////////////////////////////////////////////////////////////////////// 25 | ///TFtdcBrokerIDType是一个经纪公司代码类型 26 | ///////////////////////////////////////////////////////////////////////// 27 | typedef char TSecurityFtdcBrokerIDType[11]; 28 | 29 | ///////////////////////////////////////////////////////////////////////// 30 | ///TFtdcUserIDType是一个用户代码类型 31 | ///////////////////////////////////////////////////////////////////////// 32 | typedef char TSecurityFtdcUserIDType[16]; 33 | 34 | ///////////////////////////////////////////////////////////////////////// 35 | ///TFtdcUserNameType是一个用户名称类型 36 | ///////////////////////////////////////////////////////////////////////// 37 | typedef char TSecurityFtdcUserNameType[81]; 38 | 39 | ///////////////////////////////////////////////////////////////////////// 40 | ///TFtdcPasswordType是一个密码类型 41 | ///////////////////////////////////////////////////////////////////////// 42 | typedef char TSecurityFtdcPasswordType[41]; 43 | 44 | ///////////////////////////////////////////////////////////////////////// 45 | ///TFtdcExchangeIDType是一个交易所代码类型 46 | ///////////////////////////////////////////////////////////////////////// 47 | typedef char TSecurityFtdcExchangeIDType[9]; 48 | 49 | ///////////////////////////////////////////////////////////////////////// 50 | ///TFtdcInstrumentIDType是一个合约代码类型 51 | ///////////////////////////////////////////////////////////////////////// 52 | typedef char TSecurityFtdcInstrumentIDType[31]; 53 | 54 | ///////////////////////////////////////////////////////////////////////// 55 | ///TFtdcDateType是一个日期类型 56 | ///////////////////////////////////////////////////////////////////////// 57 | typedef char TSecurityFtdcDateType[9]; 58 | 59 | ///////////////////////////////////////////////////////////////////////// 60 | ///TFtdcTimeType是一个时间类型 61 | ///////////////////////////////////////////////////////////////////////// 62 | typedef char TSecurityFtdcTimeType[9]; 63 | 64 | ///////////////////////////////////////////////////////////////////////// 65 | ///TFtdcPriceType是一个价格类型 66 | ///////////////////////////////////////////////////////////////////////// 67 | typedef double TSecurityFtdcPriceType; 68 | 69 | ///////////////////////////////////////////////////////////////////////// 70 | ///TFtdcVolumeType是一个数量类型 71 | ///////////////////////////////////////////////////////////////////////// 72 | typedef int TSecurityFtdcVolumeType; 73 | 74 | ///////////////////////////////////////////////////////////////////////// 75 | ///TFtdcLargeVolumeType是一个大额数量类型 76 | ///////////////////////////////////////////////////////////////////////// 77 | typedef double TSecurityFtdcLargeVolumeType; 78 | 79 | ///////////////////////////////////////////////////////////////////////// 80 | ///TFtdcRatioType是一个比率类型 81 | ///////////////////////////////////////////////////////////////////////// 82 | typedef double TSecurityFtdcRatioType; 83 | 84 | ///////////////////////////////////////////////////////////////////////// 85 | ///TFtdcMoneyType是一个资金类型 86 | ///////////////////////////////////////////////////////////////////////// 87 | typedef double TSecurityFtdcMoneyType; 88 | 89 | ///////////////////////////////////////////////////////////////////////// 90 | ///TFtdcPriceLevelType是一个价格深度类型 91 | ///////////////////////////////////////////////////////////////////////// 92 | typedef int TSecurityFtdcPriceLevelType; 93 | 94 | ///////////////////////////////////////////////////////////////////////// 95 | ///TFtdcBoolType是一个布尔型类型 96 | ///////////////////////////////////////////////////////////////////////// 97 | typedef int TSecurityFtdcBoolType; 98 | 99 | ///////////////////////////////////////////////////////////////////////// 100 | ///TFtdcIndexType是一个指数类型 101 | ///////////////////////////////////////////////////////////////////////// 102 | typedef double TSecurityFtdcIndexType; 103 | 104 | ///////////////////////////////////////////////////////////////////////// 105 | ///TFtdcDataLevelType是一个行情数据等级类型 106 | ///////////////////////////////////////////////////////////////////////// 107 | ///全量行情 108 | #define SECURITY_FTDC_DL_FULL '0' 109 | ///L10行情 110 | #define SECURITY_FTDC_DL_L10 '1' 111 | ///L5行情 112 | #define SECURITY_FTDC_DL_L5 '2' 113 | ///广播代理 114 | #define SECURITY_FTDC_DL_Broadcast '3' 115 | 116 | typedef char TSecurityFtdcDataLevelType; 117 | 118 | ///////////////////////////////////////////////////////////////////////// 119 | ///TFtdcIPAddressType是一个IP地址类型 120 | ///////////////////////////////////////////////////////////////////////// 121 | typedef char TSecurityFtdcIPAddressType[16]; 122 | 123 | ///////////////////////////////////////////////////////////////////////// 124 | ///TFtdcIPPortType是一个IP端口类型 125 | ///////////////////////////////////////////////////////////////////////// 126 | typedef int TSecurityFtdcIPPortType; 127 | 128 | ///////////////////////////////////////////////////////////////////////// 129 | ///TFtdcBeginStringType是一个step起始串类型 130 | ///////////////////////////////////////////////////////////////////////// 131 | typedef char TSecurityFtdcBeginStringType[17]; 132 | 133 | ///////////////////////////////////////////////////////////////////////// 134 | ///TFtdcBodyLengthType是一个消息体长度类型 135 | ///////////////////////////////////////////////////////////////////////// 136 | typedef int TSecurityFtdcBodyLengthType; 137 | 138 | ///////////////////////////////////////////////////////////////////////// 139 | ///TFtdcMsgTypeType是一个消息类型类型 140 | ///////////////////////////////////////////////////////////////////////// 141 | typedef char TSecurityFtdcMsgTypeType[9]; 142 | 143 | ///////////////////////////////////////////////////////////////////////// 144 | ///TFtdcSenderCompIDType是一个发送方代码类型 145 | ///////////////////////////////////////////////////////////////////////// 146 | typedef char TSecurityFtdcSenderCompIDType[33]; 147 | 148 | ///////////////////////////////////////////////////////////////////////// 149 | ///TFtdcTargetCompIDType是一个接收方代码类型 150 | ///////////////////////////////////////////////////////////////////////// 151 | typedef char TSecurityFtdcTargetCompIDType[33]; 152 | 153 | ///////////////////////////////////////////////////////////////////////// 154 | ///TFtdcMsgSeqNumType是一个头消息序号标签34类型 155 | ///////////////////////////////////////////////////////////////////////// 156 | typedef int TSecurityFtdcMsgSeqNumType; 157 | 158 | ///////////////////////////////////////////////////////////////////////// 159 | ///TFtdcSendingTimeType是一个发送时间类型 160 | ///////////////////////////////////////////////////////////////////////// 161 | typedef char TSecurityFtdcSendingTimeType[21]; 162 | 163 | ///////////////////////////////////////////////////////////////////////// 164 | ///TFtdcMessageEncodingType是一个消息中Encoded域的字符编码类型类型 165 | ///////////////////////////////////////////////////////////////////////// 166 | typedef char TSecurityFtdcMessageEncodingType[21]; 167 | 168 | ///////////////////////////////////////////////////////////////////////// 169 | ///TFtdcCheckSumType是一个校验和类型 170 | ///////////////////////////////////////////////////////////////////////// 171 | typedef int TSecurityFtdcCheckSumType; 172 | 173 | ///////////////////////////////////////////////////////////////////////// 174 | ///TFtdcEncryptMethodType是一个加密方法类型 175 | ///////////////////////////////////////////////////////////////////////// 176 | typedef char TSecurityFtdcEncryptMethodType[9]; 177 | 178 | ///////////////////////////////////////////////////////////////////////// 179 | ///TFtdcHeartBtIntType是一个心跳间隔类型 180 | ///////////////////////////////////////////////////////////////////////// 181 | typedef int TSecurityFtdcHeartBtIntType; 182 | 183 | ///////////////////////////////////////////////////////////////////////// 184 | ///TFtdcInterfaceVersionType是一个行情数据接口版本号类型 185 | ///////////////////////////////////////////////////////////////////////// 186 | typedef char TSecurityFtdcInterfaceVersionType[9]; 187 | 188 | ///////////////////////////////////////////////////////////////////////// 189 | ///TFtdcMsgSeqIDType是一个消息序号标签10072类型 190 | ///////////////////////////////////////////////////////////////////////// 191 | typedef int TSecurityFtdcMsgSeqIDType; 192 | 193 | ///////////////////////////////////////////////////////////////////////// 194 | ///TFtdcGroupIDType是一个组号类型 195 | ///////////////////////////////////////////////////////////////////////// 196 | typedef int TSecurityFtdcGroupIDType; 197 | 198 | ///////////////////////////////////////////////////////////////////////// 199 | ///TFtdcGroupNoType是一个组序类型 200 | ///////////////////////////////////////////////////////////////////////// 201 | typedef int TSecurityFtdcGroupNoType; 202 | 203 | ///////////////////////////////////////////////////////////////////////// 204 | ///TFtdcOrderKindType是一个报单类型类型 205 | ///////////////////////////////////////////////////////////////////////// 206 | typedef char TSecurityFtdcOrderKindType[2]; 207 | 208 | ///////////////////////////////////////////////////////////////////////// 209 | ///TFtdcFunctionCodeType是一个功能码类型 210 | ///////////////////////////////////////////////////////////////////////// 211 | typedef char TSecurityFtdcFunctionCodeType[2]; 212 | 213 | ///////////////////////////////////////////////////////////////////////// 214 | ///TFtdcTradingPhaseType是一个交易阶段类型 215 | ///////////////////////////////////////////////////////////////////////// 216 | ///非交易时段 217 | #define SECURITY_FTDC_TP_NonTrade '0' 218 | ///集合竞价时段 219 | #define SECURITY_FTDC_TP_Bidding '1' 220 | ///连续交易时段 221 | #define SECURITY_FTDC_TP_Continuous '2' 222 | ///停牌时段 223 | #define SECURITY_FTDC_TP_Suspension '3' 224 | ///波动性熔断时段 225 | #define SECURITY_FTDC_TP_Fuse '4' 226 | ///可恢复熔断时段 227 | #define SECURITY_FTDC_TP_RecovFuse '5' 228 | ///不可恢复熔断时段 229 | #define SECURITY_FTDC_TP_UnrecovFuse '6' 230 | ///集合竞价结束时段 231 | #define SECURITY_FTDC_TP_BiddingOver '7' 232 | ///临时停牌时段 233 | #define SECURITY_FTDC_TP_TempSuspension '8' 234 | 235 | typedef char TSecurityFtdcTradingPhaseType; 236 | 237 | ///////////////////////////////////////////////////////////////////////// 238 | ///TFtdcOpenRestrictionType是一个开仓限制类型 239 | ///////////////////////////////////////////////////////////////////////// 240 | ///无开仓限制 241 | #define SECURITY_FTDC_OR_None '0' 242 | ///限制备兑开仓 243 | #define SECURITY_FTDC_OR_NoCoverOpen '1' 244 | ///限制卖出开仓 245 | #define SECURITY_FTDC_OR_NoSellOpen '2' 246 | ///限制卖出开仓、备兑开仓 247 | #define SECURITY_FTDC_OR_NoSellAndCoverOpen '3' 248 | ///限制买入开仓 249 | #define SECURITY_FTDC_OR_NoBuyOpen '4' 250 | ///限制买入开仓、备兑开仓 251 | #define SECURITY_FTDC_OR_NoBuyAndCoverOpen '5' 252 | ///限制买入开仓、卖出开仓 253 | #define SECURITY_FTDC_OR_NoBuyAndSellOpen '6' 254 | ///限制买入开仓、卖出开仓、备兑开仓 255 | #define SECURITY_FTDC_OR_NoBuySellAndCoverOpen '7' 256 | 257 | typedef char TSecurityFtdcOpenRestrictionType; 258 | 259 | ///////////////////////////////////////////////////////////////////////// 260 | ///TFtdcOrderBSFlagType是一个内外盘标志类型 261 | ///////////////////////////////////////////////////////////////////////// 262 | typedef char TSecurityFtdcOrderBSFlagType[2]; 263 | 264 | ///////////////////////////////////////////////////////////////////////// 265 | ///TFtdcMDStreamIDType是一个行情类别类型 266 | ///////////////////////////////////////////////////////////////////////// 267 | typedef char TSecurityFtdcMDStreamIDType[4]; 268 | 269 | ///////////////////////////////////////////////////////////////////////// 270 | ///TFtdcInstrumentStatusType是一个合约状态类型 271 | ///////////////////////////////////////////////////////////////////////// 272 | typedef char TSecurityFtdcInstrumentStatusType[7]; 273 | 274 | _LTS_NS_END_ 275 | 276 | #endif 277 | -------------------------------------------------------------------------------- /LTS_API/SecurityFtdcL2MDUserApiStruct.h: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////// 2 | ///@company shanghai liber information Technology Co.,Ltd 3 | ///@file SecurityFtdcL2MDUserApiStruct.h 4 | ///@brief 定义业务数据结构 5 | ///////////////////////////////////////////////////////////////////////// 6 | 7 | #if !defined(SECURITY_L2MD_FTDCSTRUCT_H) 8 | #define SECURITY_L2MD_FTDCSTRUCT_H 9 | 10 | #if _MSC_VER > 1000 11 | #pragma once 12 | #endif // _MSC_VER > 1000 13 | 14 | #include "SecurityFtdcL2MDUserApiDataType.h" 15 | 16 | _LTS_NS_BEGIN_ 17 | 18 | #pragma pack(push) 19 | #pragma pack(1) 20 | 21 | ///响应信息 22 | struct CSecurityFtdcRspInfoField 23 | { 24 | ///错误代码 25 | TSecurityFtdcErrorIDType ErrorID; 26 | ///错误信息 27 | TSecurityFtdcErrorMsgType ErrorMsg; 28 | }; 29 | 30 | ///用户登录信息 31 | struct CSecurityFtdcUserLoginField 32 | { 33 | ///交易日 34 | TSecurityFtdcDateType TradingDay; 35 | ///经纪公司代码 36 | TSecurityFtdcBrokerIDType BrokerID; 37 | ///用户代码 38 | TSecurityFtdcUserIDType UserID; 39 | ///密码 40 | TSecurityFtdcPasswordType Password; 41 | ///行情数据等级 42 | TSecurityFtdcDataLevelType DataLevel; 43 | }; 44 | 45 | ///用户登出信息 46 | struct CSecurityFtdcUserLogoutField 47 | { 48 | ///经纪公司代码 49 | TSecurityFtdcBrokerIDType BrokerID; 50 | ///用户代码 51 | TSecurityFtdcUserIDType UserID; 52 | }; 53 | 54 | ///指定的合约 55 | struct CSecurityFtdcSpecificInstrumentField 56 | { 57 | ///合约代码 58 | TSecurityFtdcInstrumentIDType InstrumentID; 59 | ///交易所代码 60 | TSecurityFtdcExchangeIDType ExchangeID; 61 | }; 62 | 63 | ///Level2行情 64 | struct CSecurityFtdcL2MarketDataField 65 | { 66 | ///交易日 67 | TSecurityFtdcDateType TradingDay; 68 | ///时间戳 69 | TSecurityFtdcTimeType TimeStamp; 70 | ///交易所代码 71 | TSecurityFtdcExchangeIDType ExchangeID; 72 | ///合约代码 73 | TSecurityFtdcInstrumentIDType InstrumentID; 74 | ///昨收盘价 75 | TSecurityFtdcPriceType PreClosePrice; 76 | ///今开盘价 77 | TSecurityFtdcPriceType OpenPrice; 78 | ///收盘价 79 | TSecurityFtdcPriceType ClosePrice; 80 | ///净值估值 81 | TSecurityFtdcPriceType IOPV; 82 | ///到期收益率 83 | TSecurityFtdcRatioType YieldToMaturity; 84 | ///动态参考价格 85 | TSecurityFtdcPriceType AuctionPrice; 86 | ///交易阶段 87 | TSecurityFtdcTradingPhaseType TradingPhase; 88 | ///开仓限制 89 | TSecurityFtdcOpenRestrictionType OpenRestriction; 90 | ///最高价 91 | TSecurityFtdcPriceType HighPrice; 92 | ///最低价 93 | TSecurityFtdcPriceType LowPrice; 94 | ///最新价 95 | TSecurityFtdcPriceType LastPrice; 96 | ///成交笔数 97 | TSecurityFtdcLargeVolumeType TradeCount; 98 | ///成交总量 99 | TSecurityFtdcLargeVolumeType TotalTradeVolume; 100 | ///成交总金额 101 | TSecurityFtdcMoneyType TotalTradeValue; 102 | ///持仓量 103 | TSecurityFtdcLargeVolumeType OpenInterest; 104 | ///委托买入总量 105 | TSecurityFtdcLargeVolumeType TotalBidVolume; 106 | ///加权平均委买价 107 | TSecurityFtdcPriceType WeightedAvgBidPrice; 108 | ///债券加权平均委买价 109 | TSecurityFtdcPriceType AltWeightedAvgBidPrice; 110 | ///委托卖出总量 111 | TSecurityFtdcLargeVolumeType TotalOfferVolume; 112 | ///加权平均委卖价 113 | TSecurityFtdcPriceType WeightedAvgOfferPrice; 114 | ///债券加权平均委卖价格 115 | TSecurityFtdcPriceType AltWeightedAvgOfferPrice; 116 | ///买价深度 117 | TSecurityFtdcPriceLevelType BidPriceLevel; 118 | ///卖价深度 119 | TSecurityFtdcPriceLevelType OfferPriceLevel; 120 | ///申买价一 121 | TSecurityFtdcPriceType BidPrice1; 122 | ///申买量一 123 | TSecurityFtdcLargeVolumeType BidVolume1; 124 | ///实际买总委托笔数一 125 | TSecurityFtdcVolumeType BidCount1; 126 | ///申买价二 127 | TSecurityFtdcPriceType BidPrice2; 128 | ///申买量二 129 | TSecurityFtdcLargeVolumeType BidVolume2; 130 | ///实际买总委托笔数二 131 | TSecurityFtdcVolumeType BidCount2; 132 | ///申买价三 133 | TSecurityFtdcPriceType BidPrice3; 134 | ///申买量三 135 | TSecurityFtdcLargeVolumeType BidVolume3; 136 | ///实际买总委托笔数三 137 | TSecurityFtdcVolumeType BidCount3; 138 | ///申买价四 139 | TSecurityFtdcPriceType BidPrice4; 140 | ///申买量四 141 | TSecurityFtdcLargeVolumeType BidVolume4; 142 | ///实际买总委托笔数四 143 | TSecurityFtdcVolumeType BidCount4; 144 | ///申买价五 145 | TSecurityFtdcPriceType BidPrice5; 146 | ///申买量五 147 | TSecurityFtdcLargeVolumeType BidVolume5; 148 | ///实际买总委托笔数五 149 | TSecurityFtdcVolumeType BidCount5; 150 | ///申买价六 151 | TSecurityFtdcPriceType BidPrice6; 152 | ///申买量六 153 | TSecurityFtdcLargeVolumeType BidVolume6; 154 | ///实际买总委托笔数六 155 | TSecurityFtdcVolumeType BidCount6; 156 | ///申买价七 157 | TSecurityFtdcPriceType BidPrice7; 158 | ///申买量七 159 | TSecurityFtdcLargeVolumeType BidVolume7; 160 | ///实际买总委托笔数七 161 | TSecurityFtdcVolumeType BidCount7; 162 | ///申买价八 163 | TSecurityFtdcPriceType BidPrice8; 164 | ///申买量八 165 | TSecurityFtdcLargeVolumeType BidVolume8; 166 | ///实际买总委托笔数八 167 | TSecurityFtdcVolumeType BidCount8; 168 | ///申买价九 169 | TSecurityFtdcPriceType BidPrice9; 170 | ///申买量九 171 | TSecurityFtdcLargeVolumeType BidVolume9; 172 | ///实际买总委托笔数九 173 | TSecurityFtdcVolumeType BidCount9; 174 | ///申买价十 175 | TSecurityFtdcPriceType BidPriceA; 176 | ///申买量十 177 | TSecurityFtdcLargeVolumeType BidVolumeA; 178 | ///实际买总委托笔数十 179 | TSecurityFtdcVolumeType BidCountA; 180 | ///申卖价一 181 | TSecurityFtdcPriceType OfferPrice1; 182 | ///申卖量一 183 | TSecurityFtdcLargeVolumeType OfferVolume1; 184 | ///实际卖总委托笔数一 185 | TSecurityFtdcVolumeType OfferCount1; 186 | ///申卖价二 187 | TSecurityFtdcPriceType OfferPrice2; 188 | ///申卖量二 189 | TSecurityFtdcLargeVolumeType OfferVolume2; 190 | ///实际卖总委托笔数二 191 | TSecurityFtdcVolumeType OfferCount2; 192 | ///申卖价三 193 | TSecurityFtdcPriceType OfferPrice3; 194 | ///申卖量三 195 | TSecurityFtdcLargeVolumeType OfferVolume3; 196 | ///实际卖总委托笔数三 197 | TSecurityFtdcVolumeType OfferCount3; 198 | ///申卖价四 199 | TSecurityFtdcPriceType OfferPrice4; 200 | ///申卖量四 201 | TSecurityFtdcLargeVolumeType OfferVolume4; 202 | ///实际卖总委托笔数四 203 | TSecurityFtdcVolumeType OfferCount4; 204 | ///申卖价五 205 | TSecurityFtdcPriceType OfferPrice5; 206 | ///申卖量五 207 | TSecurityFtdcLargeVolumeType OfferVolume5; 208 | ///实际卖总委托笔数五 209 | TSecurityFtdcVolumeType OfferCount5; 210 | ///申卖价六 211 | TSecurityFtdcPriceType OfferPrice6; 212 | ///申卖量六 213 | TSecurityFtdcLargeVolumeType OfferVolume6; 214 | ///实际卖总委托笔数六 215 | TSecurityFtdcVolumeType OfferCount6; 216 | ///申卖价七 217 | TSecurityFtdcPriceType OfferPrice7; 218 | ///申卖量七 219 | TSecurityFtdcLargeVolumeType OfferVolume7; 220 | ///实际卖总委托笔数七 221 | TSecurityFtdcVolumeType OfferCount7; 222 | ///申卖价八 223 | TSecurityFtdcPriceType OfferPrice8; 224 | ///申卖量八 225 | TSecurityFtdcLargeVolumeType OfferVolume8; 226 | ///实际卖总委托笔数八 227 | TSecurityFtdcVolumeType OfferCount8; 228 | ///申卖价九 229 | TSecurityFtdcPriceType OfferPrice9; 230 | ///申卖量九 231 | TSecurityFtdcLargeVolumeType OfferVolume9; 232 | ///实际卖总委托笔数九 233 | TSecurityFtdcVolumeType OfferCount9; 234 | ///申卖价十 235 | TSecurityFtdcPriceType OfferPriceA; 236 | ///申卖量十 237 | TSecurityFtdcLargeVolumeType OfferVolumeA; 238 | ///实际卖总委托笔数十 239 | TSecurityFtdcVolumeType OfferCountA; 240 | ///行情类别 241 | TSecurityFtdcMDStreamIDType MDStreamID; 242 | ///合约状态 243 | TSecurityFtdcInstrumentStatusType InstrumentStatus; 244 | ///昨净值估值 245 | TSecurityFtdcPriceType PreIOPV; 246 | ///市盈率一 247 | TSecurityFtdcRatioType PERatio1; 248 | ///市盈率二 249 | TSecurityFtdcRatioType PERatio2; 250 | ///涨停价 251 | TSecurityFtdcPriceType UpperLimitPrice; 252 | ///跌停价 253 | TSecurityFtdcPriceType LowerLimitPrice; 254 | ///权证溢价率 255 | TSecurityFtdcRatioType WarrantPremiumRatio; 256 | ///权证执行总数量 257 | TSecurityFtdcLargeVolumeType TotalWarrantExecQty; 258 | ///升跌一 259 | TSecurityFtdcPriceType PriceDiff1; 260 | ///升跌二 261 | TSecurityFtdcPriceType PriceDiff2; 262 | ///ETF申购笔数 263 | TSecurityFtdcLargeVolumeType ETFBuyNumber; 264 | ///ETF申购数量 265 | TSecurityFtdcLargeVolumeType ETFBuyAmount; 266 | ///ETF申购金额 267 | TSecurityFtdcMoneyType ETFBuyMoney; 268 | ///ETF赎回笔数 269 | TSecurityFtdcLargeVolumeType ETFSellNumber; 270 | ///ETF赎回数量 271 | TSecurityFtdcLargeVolumeType ETFSellAmount; 272 | ///ETF赎回金额 273 | TSecurityFtdcMoneyType ETFSellMoney; 274 | ///买入撤单笔数 275 | TSecurityFtdcLargeVolumeType WithdrawBuyNumber; 276 | ///买入撤单数量 277 | TSecurityFtdcLargeVolumeType WithdrawBuyAmount; 278 | ///买入撤单金额 279 | TSecurityFtdcMoneyType WithdrawBuyMoney; 280 | ///买入总笔数 281 | TSecurityFtdcLargeVolumeType TotalBidNumber; 282 | ///买入委托成交最大等待时间 283 | TSecurityFtdcLargeVolumeType BidTradeMaxDuration; 284 | ///买方委托价位数 285 | TSecurityFtdcLargeVolumeType NumBidOrders; 286 | ///卖出撤单笔数 287 | TSecurityFtdcLargeVolumeType WithdrawSellNumber; 288 | ///卖出撤单数量 289 | TSecurityFtdcLargeVolumeType WithdrawSellAmount; 290 | ///卖出撤单金额 291 | TSecurityFtdcMoneyType WithdrawSellMoney; 292 | ///卖出总笔数 293 | TSecurityFtdcLargeVolumeType TotalOfferNumber; 294 | ///卖出委托成交最大等待时间 295 | TSecurityFtdcLargeVolumeType OfferTradeMaxDuration; 296 | ///卖方委托价位数 297 | TSecurityFtdcLargeVolumeType NumOfferOrders; 298 | }; 299 | 300 | ///Level2行情更新时间属性 301 | struct CSecurityFtdcL2UpdateTimeField 302 | { 303 | ///交易日 304 | TSecurityFtdcDateType TradingDay; 305 | ///时间戳 306 | TSecurityFtdcTimeType TimeStamp; 307 | ///交易所代码 308 | TSecurityFtdcExchangeIDType ExchangeID; 309 | ///合约代码 310 | TSecurityFtdcInstrumentIDType InstrumentID; 311 | }; 312 | 313 | ///Level2行情静态属性 314 | struct CSecurityFtdcL2StaticField 315 | { 316 | ///昨收盘价 317 | TSecurityFtdcPriceType PreClosePrice; 318 | ///今开盘价 319 | TSecurityFtdcPriceType OpenPrice; 320 | ///收盘价 321 | TSecurityFtdcPriceType ClosePrice; 322 | ///净值估值 323 | TSecurityFtdcPriceType IOPV; 324 | ///到期收益率 325 | TSecurityFtdcRatioType YieldToMaturity; 326 | ///动态参考价格 327 | TSecurityFtdcPriceType AuctionPrice; 328 | ///交易阶段 329 | TSecurityFtdcTradingPhaseType TradingPhase; 330 | ///开仓限制 331 | TSecurityFtdcOpenRestrictionType OpenRestriction; 332 | }; 333 | 334 | ///Level2行情价格区间属性 335 | struct CSecurityFtdcL2PriceIntervalField 336 | { 337 | ///最高价 338 | TSecurityFtdcPriceType HighPrice; 339 | ///最低价 340 | TSecurityFtdcPriceType LowPrice; 341 | }; 342 | 343 | ///Level2行情基本信息 344 | struct CSecurityFtdcL2BaseField 345 | { 346 | ///最新价 347 | TSecurityFtdcPriceType LastPrice; 348 | }; 349 | 350 | ///Level2成交信息 351 | struct CSecurityFtdcL2TradedField 352 | { 353 | ///成交笔数 354 | TSecurityFtdcLargeVolumeType TradeCount; 355 | ///成交总量 356 | TSecurityFtdcLargeVolumeType TotalTradeVolume; 357 | ///成交总金额 358 | TSecurityFtdcMoneyType TotalTradeValue; 359 | ///持仓量 360 | TSecurityFtdcLargeVolumeType OpenInterest; 361 | }; 362 | 363 | ///Level2行情数据属性 364 | struct CSecurityFtdcL2DataLevelField 365 | { 366 | ///价格 367 | TSecurityFtdcPriceType Price; 368 | ///数量 369 | TSecurityFtdcLargeVolumeType Volume; 370 | ///实际总委托笔数 371 | TSecurityFtdcVolumeType Count; 372 | }; 373 | 374 | ///Level2委买信息 375 | struct CSecurityFtdcL2BidOrderField 376 | { 377 | ///委托买入总量 378 | TSecurityFtdcLargeVolumeType TotalBidVolume; 379 | ///加权平均委买价 380 | TSecurityFtdcPriceType WeightedAvgBidPrice; 381 | ///债券加权平均委买价 382 | TSecurityFtdcPriceType AltWeightedAvgBidPrice; 383 | }; 384 | 385 | ///Level2委卖信息 386 | struct CSecurityFtdcL2OfferOrderField 387 | { 388 | ///委托卖出总量 389 | TSecurityFtdcLargeVolumeType TotalOfferVolume; 390 | ///加权平均委卖价 391 | TSecurityFtdcPriceType WeightedAvgOfferPrice; 392 | ///债券加权平均委卖价格 393 | TSecurityFtdcPriceType AltWeightedAvgOfferPrice; 394 | }; 395 | 396 | ///Level2价格深度属性 397 | struct CSecurityFtdcL2PriceLevelField 398 | { 399 | ///买价深度 400 | TSecurityFtdcPriceLevelType BidPriceLevel; 401 | ///卖价深度 402 | TSecurityFtdcPriceLevelType OfferPriceLevel; 403 | }; 404 | 405 | ///Level2行情申买一属性 406 | struct CSecurityFtdcL2Bid1Field 407 | { 408 | ///申买价一 409 | TSecurityFtdcPriceType BidPrice1; 410 | ///申买量一 411 | TSecurityFtdcLargeVolumeType BidVolume1; 412 | ///实际买总委托笔数一 413 | TSecurityFtdcVolumeType BidCount1; 414 | }; 415 | 416 | ///Level2行情申卖一属性 417 | struct CSecurityFtdcL2Offer1Field 418 | { 419 | ///申卖价一 420 | TSecurityFtdcPriceType OfferPrice1; 421 | ///申卖量一 422 | TSecurityFtdcLargeVolumeType OfferVolume1; 423 | ///实际卖总委托笔数一 424 | TSecurityFtdcVolumeType OfferCount1; 425 | }; 426 | 427 | ///Level2行情申买二属性 428 | struct CSecurityFtdcL2Bid2Field 429 | { 430 | ///申买价二 431 | TSecurityFtdcPriceType BidPrice2; 432 | ///申买量二 433 | TSecurityFtdcLargeVolumeType BidVolume2; 434 | ///实际买总委托笔数二 435 | TSecurityFtdcVolumeType BidCount2; 436 | }; 437 | 438 | ///Level2行情申卖二属性 439 | struct CSecurityFtdcL2Offer2Field 440 | { 441 | ///申卖价二 442 | TSecurityFtdcPriceType OfferPrice2; 443 | ///申卖量二 444 | TSecurityFtdcLargeVolumeType OfferVolume2; 445 | ///实际卖总委托笔数二 446 | TSecurityFtdcVolumeType OfferCount2; 447 | }; 448 | 449 | ///Level2行情申买三属性 450 | struct CSecurityFtdcL2Bid3Field 451 | { 452 | ///申买价三 453 | TSecurityFtdcPriceType BidPrice3; 454 | ///申买量三 455 | TSecurityFtdcLargeVolumeType BidVolume3; 456 | ///实际买总委托笔数三 457 | TSecurityFtdcVolumeType BidCount3; 458 | }; 459 | 460 | ///Level2行情申卖三属性 461 | struct CSecurityFtdcL2Offer3Field 462 | { 463 | ///申卖价三 464 | TSecurityFtdcPriceType OfferPrice3; 465 | ///申卖量三 466 | TSecurityFtdcLargeVolumeType OfferVolume3; 467 | ///实际卖总委托笔数三 468 | TSecurityFtdcVolumeType OfferCount3; 469 | }; 470 | 471 | ///Level2行情申买四属性 472 | struct CSecurityFtdcL2Bid4Field 473 | { 474 | ///申买价四 475 | TSecurityFtdcPriceType BidPrice4; 476 | ///申买量四 477 | TSecurityFtdcLargeVolumeType BidVolume4; 478 | ///实际买总委托笔数四 479 | TSecurityFtdcVolumeType BidCount4; 480 | }; 481 | 482 | ///Level2行情申卖四属性 483 | struct CSecurityFtdcL2Offer4Field 484 | { 485 | ///申卖价四 486 | TSecurityFtdcPriceType OfferPrice4; 487 | ///申卖量四 488 | TSecurityFtdcLargeVolumeType OfferVolume4; 489 | ///实际卖总委托笔数四 490 | TSecurityFtdcVolumeType OfferCount4; 491 | }; 492 | 493 | ///Level2行情申买五属性 494 | struct CSecurityFtdcL2Bid5Field 495 | { 496 | ///申买价五 497 | TSecurityFtdcPriceType BidPrice5; 498 | ///申买量五 499 | TSecurityFtdcLargeVolumeType BidVolume5; 500 | ///实际买总委托笔数五 501 | TSecurityFtdcVolumeType BidCount5; 502 | }; 503 | 504 | ///Level2行情申卖五属性 505 | struct CSecurityFtdcL2Offer5Field 506 | { 507 | ///申卖价五 508 | TSecurityFtdcPriceType OfferPrice5; 509 | ///申卖量五 510 | TSecurityFtdcLargeVolumeType OfferVolume5; 511 | ///实际卖总委托笔数五 512 | TSecurityFtdcVolumeType OfferCount5; 513 | }; 514 | 515 | ///Level2行情申买六属性 516 | struct CSecurityFtdcL2Bid6Field 517 | { 518 | ///申买价六 519 | TSecurityFtdcPriceType BidPrice6; 520 | ///申买量六 521 | TSecurityFtdcLargeVolumeType BidVolume6; 522 | ///实际买总委托笔数六 523 | TSecurityFtdcVolumeType BidCount6; 524 | }; 525 | 526 | ///Level2行情申卖六属性 527 | struct CSecurityFtdcL2Offer6Field 528 | { 529 | ///申卖价六 530 | TSecurityFtdcPriceType OfferPrice6; 531 | ///申卖量六 532 | TSecurityFtdcLargeVolumeType OfferVolume6; 533 | ///实际卖总委托笔数六 534 | TSecurityFtdcVolumeType OfferCount6; 535 | }; 536 | 537 | ///Level2行情申买七属性 538 | struct CSecurityFtdcL2Bid7Field 539 | { 540 | ///申买价七 541 | TSecurityFtdcPriceType BidPrice7; 542 | ///申买量七 543 | TSecurityFtdcLargeVolumeType BidVolume7; 544 | ///实际买总委托笔数七 545 | TSecurityFtdcVolumeType BidCount7; 546 | }; 547 | 548 | ///Level2行情申卖七属性 549 | struct CSecurityFtdcL2Offer7Field 550 | { 551 | ///申卖价七 552 | TSecurityFtdcPriceType OfferPrice7; 553 | ///申卖量七 554 | TSecurityFtdcLargeVolumeType OfferVolume7; 555 | ///实际卖总委托笔数七 556 | TSecurityFtdcVolumeType OfferCount7; 557 | }; 558 | 559 | ///Level2行情申买八属性 560 | struct CSecurityFtdcL2Bid8Field 561 | { 562 | ///申买价八 563 | TSecurityFtdcPriceType BidPrice8; 564 | ///申买量八 565 | TSecurityFtdcLargeVolumeType BidVolume8; 566 | ///实际买总委托笔数八 567 | TSecurityFtdcVolumeType BidCount8; 568 | }; 569 | 570 | ///Level2行情申卖八属性 571 | struct CSecurityFtdcL2Offer8Field 572 | { 573 | ///申卖价八 574 | TSecurityFtdcPriceType OfferPrice8; 575 | ///申卖量八 576 | TSecurityFtdcLargeVolumeType OfferVolume8; 577 | ///实际卖总委托笔数八 578 | TSecurityFtdcVolumeType OfferCount8; 579 | }; 580 | 581 | ///Level2行情申买九属性 582 | struct CSecurityFtdcL2Bid9Field 583 | { 584 | ///申买价九 585 | TSecurityFtdcPriceType BidPrice9; 586 | ///申买量九 587 | TSecurityFtdcLargeVolumeType BidVolume9; 588 | ///实际买总委托笔数九 589 | TSecurityFtdcVolumeType BidCount9; 590 | }; 591 | 592 | ///Level2行情申卖九属性 593 | struct CSecurityFtdcL2Offer9Field 594 | { 595 | ///申卖价九 596 | TSecurityFtdcPriceType OfferPrice9; 597 | ///申卖量九 598 | TSecurityFtdcLargeVolumeType OfferVolume9; 599 | ///实际卖总委托笔数九 600 | TSecurityFtdcVolumeType OfferCount9; 601 | }; 602 | 603 | ///Level2行情申买十属性 604 | struct CSecurityFtdcL2BidAField 605 | { 606 | ///申买价十 607 | TSecurityFtdcPriceType BidPriceA; 608 | ///申买量十 609 | TSecurityFtdcLargeVolumeType BidVolumeA; 610 | ///实际买总委托笔数十 611 | TSecurityFtdcVolumeType BidCountA; 612 | }; 613 | 614 | ///Level2行情申卖十属性 615 | struct CSecurityFtdcL2OfferAField 616 | { 617 | ///申卖价十 618 | TSecurityFtdcPriceType OfferPriceA; 619 | ///申卖量十 620 | TSecurityFtdcLargeVolumeType OfferVolumeA; 621 | ///实际卖总委托笔数十 622 | TSecurityFtdcVolumeType OfferCountA; 623 | }; 624 | 625 | ///Level2行情申买属性 626 | struct CSecurityFtdcL2BidField 627 | { 628 | ///申买价一 629 | TSecurityFtdcPriceType BidPrice1; 630 | ///申买量一 631 | TSecurityFtdcLargeVolumeType BidVolume1; 632 | ///实际买总委托笔数一 633 | TSecurityFtdcVolumeType BidCount1; 634 | ///申买价二 635 | TSecurityFtdcPriceType BidPrice2; 636 | ///申买量二 637 | TSecurityFtdcLargeVolumeType BidVolume2; 638 | ///实际买总委托笔数二 639 | TSecurityFtdcVolumeType BidCount2; 640 | ///申买价三 641 | TSecurityFtdcPriceType BidPrice3; 642 | ///申买量三 643 | TSecurityFtdcLargeVolumeType BidVolume3; 644 | ///实际买总委托笔数三 645 | TSecurityFtdcVolumeType BidCount3; 646 | ///申买价四 647 | TSecurityFtdcPriceType BidPrice4; 648 | ///申买量四 649 | TSecurityFtdcLargeVolumeType BidVolume4; 650 | ///实际买总委托笔数四 651 | TSecurityFtdcVolumeType BidCount4; 652 | ///申买价五 653 | TSecurityFtdcPriceType BidPrice5; 654 | ///申买量五 655 | TSecurityFtdcLargeVolumeType BidVolume5; 656 | ///实际买总委托笔数五 657 | TSecurityFtdcVolumeType BidCount5; 658 | ///申买价六 659 | TSecurityFtdcPriceType BidPrice6; 660 | ///申买量六 661 | TSecurityFtdcLargeVolumeType BidVolume6; 662 | ///实际买总委托笔数六 663 | TSecurityFtdcVolumeType BidCount6; 664 | ///申买价七 665 | TSecurityFtdcPriceType BidPrice7; 666 | ///申买量七 667 | TSecurityFtdcLargeVolumeType BidVolume7; 668 | ///实际买总委托笔数七 669 | TSecurityFtdcVolumeType BidCount7; 670 | ///申买价八 671 | TSecurityFtdcPriceType BidPrice8; 672 | ///申买量八 673 | TSecurityFtdcLargeVolumeType BidVolume8; 674 | ///实际买总委托笔数八 675 | TSecurityFtdcVolumeType BidCount8; 676 | ///申买价九 677 | TSecurityFtdcPriceType BidPrice9; 678 | ///申买量九 679 | TSecurityFtdcLargeVolumeType BidVolume9; 680 | ///实际买总委托笔数九 681 | TSecurityFtdcVolumeType BidCount9; 682 | ///申买价十 683 | TSecurityFtdcPriceType BidPriceA; 684 | ///申买量十 685 | TSecurityFtdcLargeVolumeType BidVolumeA; 686 | ///实际买总委托笔数十 687 | TSecurityFtdcVolumeType BidCountA; 688 | }; 689 | 690 | ///Level2行情申卖属性 691 | struct CSecurityFtdcL2OfferField 692 | { 693 | ///申卖价一 694 | TSecurityFtdcPriceType OfferPrice1; 695 | ///申卖量一 696 | TSecurityFtdcLargeVolumeType OfferVolume1; 697 | ///实际卖总委托笔数一 698 | TSecurityFtdcVolumeType OfferCount1; 699 | ///申卖价二 700 | TSecurityFtdcPriceType OfferPrice2; 701 | ///申卖量二 702 | TSecurityFtdcLargeVolumeType OfferVolume2; 703 | ///实际卖总委托笔数二 704 | TSecurityFtdcVolumeType OfferCount2; 705 | ///申卖价三 706 | TSecurityFtdcPriceType OfferPrice3; 707 | ///申卖量三 708 | TSecurityFtdcLargeVolumeType OfferVolume3; 709 | ///实际卖总委托笔数三 710 | TSecurityFtdcVolumeType OfferCount3; 711 | ///申卖价四 712 | TSecurityFtdcPriceType OfferPrice4; 713 | ///申卖量四 714 | TSecurityFtdcLargeVolumeType OfferVolume4; 715 | ///实际卖总委托笔数四 716 | TSecurityFtdcVolumeType OfferCount4; 717 | ///申卖价五 718 | TSecurityFtdcPriceType OfferPrice5; 719 | ///申卖量五 720 | TSecurityFtdcLargeVolumeType OfferVolume5; 721 | ///实际卖总委托笔数五 722 | TSecurityFtdcVolumeType OfferCount5; 723 | ///申卖价六 724 | TSecurityFtdcPriceType OfferPrice6; 725 | ///申卖量六 726 | TSecurityFtdcLargeVolumeType OfferVolume6; 727 | ///实际卖总委托笔数六 728 | TSecurityFtdcVolumeType OfferCount6; 729 | ///申卖价七 730 | TSecurityFtdcPriceType OfferPrice7; 731 | ///申卖量七 732 | TSecurityFtdcLargeVolumeType OfferVolume7; 733 | ///实际卖总委托笔数七 734 | TSecurityFtdcVolumeType OfferCount7; 735 | ///申卖价八 736 | TSecurityFtdcPriceType OfferPrice8; 737 | ///申卖量八 738 | TSecurityFtdcLargeVolumeType OfferVolume8; 739 | ///实际卖总委托笔数八 740 | TSecurityFtdcVolumeType OfferCount8; 741 | ///申卖价九 742 | TSecurityFtdcPriceType OfferPrice9; 743 | ///申卖量九 744 | TSecurityFtdcLargeVolumeType OfferVolume9; 745 | ///实际卖总委托笔数九 746 | TSecurityFtdcVolumeType OfferCount9; 747 | ///申卖价十 748 | TSecurityFtdcPriceType OfferPriceA; 749 | ///申卖量十 750 | TSecurityFtdcLargeVolumeType OfferVolumeA; 751 | ///实际卖总委托笔数十 752 | TSecurityFtdcVolumeType OfferCountA; 753 | }; 754 | 755 | ///Level2指数行情 756 | struct CSecurityFtdcL2IndexField 757 | { 758 | ///交易日 759 | TSecurityFtdcDateType TradingDay; 760 | ///行情时间(秒) 761 | TSecurityFtdcTimeType TimeStamp; 762 | ///交易所代码 763 | TSecurityFtdcExchangeIDType ExchangeID; 764 | ///指数代码 765 | TSecurityFtdcInstrumentIDType InstrumentID; 766 | ///前收盘指数 767 | TSecurityFtdcIndexType PreCloseIndex; 768 | ///今开盘指数 769 | TSecurityFtdcIndexType OpenIndex; 770 | ///今日收盘指数 771 | TSecurityFtdcIndexType CloseIndex; 772 | ///最高指数 773 | TSecurityFtdcIndexType HighIndex; 774 | ///最低指数 775 | TSecurityFtdcIndexType LowIndex; 776 | ///最新指数 777 | TSecurityFtdcIndexType LastIndex; 778 | ///参与计算相应指数的成交金额(元) 779 | TSecurityFtdcMoneyType TurnOver; 780 | ///参与计算相应指数的交易数量(手) 781 | TSecurityFtdcLargeVolumeType TotalVolume; 782 | ///行情类别 783 | TSecurityFtdcMDStreamIDType MDStreamID; 784 | }; 785 | 786 | ///Level2行情用户信息 787 | struct CSecurityFtdcL2UserInfoField 788 | { 789 | ///经纪公司代码 790 | TSecurityFtdcBrokerIDType BrokerID; 791 | ///用户代码 792 | TSecurityFtdcUserIDType UserID; 793 | ///用户名称 794 | TSecurityFtdcUserNameType UserName; 795 | ///密码 796 | TSecurityFtdcPasswordType Password; 797 | ///行情数据等级 798 | TSecurityFtdcDataLevelType DataLevel; 799 | ///股票最大订阅数量 800 | TSecurityFtdcVolumeType MaxStockCount; 801 | ///指数最大订阅数量 802 | TSecurityFtdcVolumeType MaxIndexCount; 803 | }; 804 | 805 | ///UDP组播组信息 806 | struct CSecurityFtdcMulticastGroupInfoField 807 | { 808 | ///组播组IP地址 809 | TSecurityFtdcIPAddressType GroupIP; 810 | ///组播组IP端口 811 | TSecurityFtdcIPPortType GroupPort; 812 | ///源地址 813 | TSecurityFtdcIPAddressType SourceIP; 814 | }; 815 | 816 | ///Level2逐笔委托 817 | struct CSecurityFtdcL2OrderField 818 | { 819 | ///委托组 820 | TSecurityFtdcGroupIDType OrderGroupID; 821 | ///委托序号 822 | TSecurityFtdcGroupNoType OrderIndex; 823 | ///委托时间(秒) 824 | TSecurityFtdcTimeType OrderTime; 825 | ///交易所代码 826 | TSecurityFtdcExchangeIDType ExchangeID; 827 | ///合约代码 828 | TSecurityFtdcInstrumentIDType InstrumentID; 829 | ///委托价格 830 | TSecurityFtdcPriceType Price; 831 | ///委托数量 832 | TSecurityFtdcLargeVolumeType Volume; 833 | ///报单类型 834 | TSecurityFtdcOrderKindType OrderKind; 835 | ///功能码 836 | TSecurityFtdcFunctionCodeType FunctionCode; 837 | ///行情类别 838 | TSecurityFtdcMDStreamIDType MDStreamID; 839 | }; 840 | 841 | ///Level2逐笔成交 842 | struct CSecurityFtdcL2TradeField 843 | { 844 | ///成交组 845 | TSecurityFtdcGroupIDType TradeGroupID; 846 | ///成交序号 847 | TSecurityFtdcGroupNoType TradeIndex; 848 | ///买方委托序号 849 | TSecurityFtdcGroupNoType BuyIndex; 850 | ///卖方委托序号 851 | TSecurityFtdcGroupNoType SellIndex; 852 | ///成交时间(秒) 853 | TSecurityFtdcTimeType TradeTime; 854 | ///交易所代码 855 | TSecurityFtdcExchangeIDType ExchangeID; 856 | ///合约代码 857 | TSecurityFtdcInstrumentIDType InstrumentID; 858 | ///成交价格 859 | TSecurityFtdcPriceType Price; 860 | ///成交数量 861 | TSecurityFtdcLargeVolumeType Volume; 862 | ///报单类型 863 | TSecurityFtdcOrderKindType OrderKind; 864 | ///功能码 865 | TSecurityFtdcFunctionCodeType FunctionCode; 866 | ///内外盘标志 867 | TSecurityFtdcOrderBSFlagType OrderBSFlag; 868 | ///行情类别 869 | TSecurityFtdcMDStreamIDType MDStreamID; 870 | }; 871 | 872 | ///Level2行情新增静态属性 873 | struct CSecurityFtdcL2NewStaticField 874 | { 875 | ///行情类别 876 | TSecurityFtdcMDStreamIDType MDStreamID; 877 | ///合约状态 878 | TSecurityFtdcInstrumentStatusType InstrumentStatus; 879 | ///昨净值估值 880 | TSecurityFtdcPriceType PreIOPV; 881 | ///市盈率一 882 | TSecurityFtdcRatioType PERatio1; 883 | ///市盈率二 884 | TSecurityFtdcRatioType PERatio2; 885 | ///涨停价 886 | TSecurityFtdcPriceType UpperLimitPrice; 887 | ///跌停价 888 | TSecurityFtdcPriceType LowerLimitPrice; 889 | ///权证溢价率 890 | TSecurityFtdcRatioType WarrantPremiumRatio; 891 | ///权证执行总数量 892 | TSecurityFtdcLargeVolumeType TotalWarrantExecQty; 893 | }; 894 | 895 | ///Level2行情升跌信息 896 | struct CSecurityFtdcL2PriceDiffField 897 | { 898 | ///升跌一 899 | TSecurityFtdcPriceType PriceDiff1; 900 | ///升跌二 901 | TSecurityFtdcPriceType PriceDiff2; 902 | }; 903 | 904 | ///Level2ETF申购信息 905 | struct CSecurityFtdcL2ETFBuyInfoField 906 | { 907 | ///ETF申购笔数 908 | TSecurityFtdcLargeVolumeType ETFBuyNumber; 909 | ///ETF申购数量 910 | TSecurityFtdcLargeVolumeType ETFBuyAmount; 911 | ///ETF申购金额 912 | TSecurityFtdcMoneyType ETFBuyMoney; 913 | }; 914 | 915 | ///Level2ETF赎回信息 916 | struct CSecurityFtdcL2ETFSellInfoField 917 | { 918 | ///ETF赎回笔数 919 | TSecurityFtdcLargeVolumeType ETFSellNumber; 920 | ///ETF赎回数量 921 | TSecurityFtdcLargeVolumeType ETFSellAmount; 922 | ///ETF赎回金额 923 | TSecurityFtdcMoneyType ETFSellMoney; 924 | }; 925 | 926 | ///Level2买入信息 927 | struct CSecurityFtdcL2BuyInfoField 928 | { 929 | ///买入撤单笔数 930 | TSecurityFtdcLargeVolumeType WithdrawBuyNumber; 931 | ///买入撤单数量 932 | TSecurityFtdcLargeVolumeType WithdrawBuyAmount; 933 | ///买入撤单金额 934 | TSecurityFtdcMoneyType WithdrawBuyMoney; 935 | ///买入总笔数 936 | TSecurityFtdcLargeVolumeType TotalBidNumber; 937 | ///买入委托成交最大等待时间 938 | TSecurityFtdcLargeVolumeType BidTradeMaxDuration; 939 | ///买方委托价位数 940 | TSecurityFtdcLargeVolumeType NumBidOrders; 941 | }; 942 | 943 | ///Level2卖出信息 944 | struct CSecurityFtdcL2SellInfoField 945 | { 946 | ///卖出撤单笔数 947 | TSecurityFtdcLargeVolumeType WithdrawSellNumber; 948 | ///卖出撤单数量 949 | TSecurityFtdcLargeVolumeType WithdrawSellAmount; 950 | ///卖出撤单金额 951 | TSecurityFtdcMoneyType WithdrawSellMoney; 952 | ///卖出总笔数 953 | TSecurityFtdcLargeVolumeType TotalOfferNumber; 954 | ///卖出委托成交最大等待时间 955 | TSecurityFtdcLargeVolumeType OfferTradeMaxDuration; 956 | ///卖方委托价位数 957 | TSecurityFtdcLargeVolumeType NumOfferOrders; 958 | }; 959 | 960 | 961 | #pragma pack(pop) 962 | _LTS_NS_END_ 963 | 964 | #endif 965 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ########################################### 2 | #Makefile for simple programs 3 | ########################################### 4 | INC= 5 | LIBPATH=$$HOME/Lib/LTS 6 | LIB=-l:L2mduserapi.so -lpthread 7 | CC=g++ -std=c++14 8 | # display all warnings 9 | CC_FLAG=-Wall -g -O2 10 | 11 | PRG=MarketMachine 12 | OBJ=main.o ltsmdspi.o mmap_buffer/mmapper.o\ 13 | ThirdParty/inih/ini.o ThirdParty/inih/INIReader.o 14 | 15 | $(PRG):$(OBJ) 16 | $(CC) $(INC) -o $@ $(OBJ) -L$(LIBPATH) $(LIB) 17 | 18 | .SUFFIXES: .c .o .cpp 19 | .cpp.o: 20 | $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o 21 | 22 | .PRONY:clean 23 | clean: 24 | @echo "Removing linked and compiled files......" 25 | rm -f $(OBJ) $(PRG) 26 | rm Data/MarketData/MarketData_* 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 华宝证券行情接收机 2 | 3 | 特点 4 | --- 5 | 采用 mmap 实现了 lock-free 的并行写入,非常迅速,但是需要足够的内存
6 | 为避免 remap, 最初分配 20 GB 左右内存为佳,可以在 config.ini 修改,单位为 GB 7 | 8 | 各项功能包括 remap 通过了测试集的测试。 9 | 10 | Usage 11 | --- 12 | 修改 config.ini 按照实际配置 13 | 14 | make 后运行 15 | -------------------------------------------------------------------------------- /ThirdParty/inih/INIReader.cpp: -------------------------------------------------------------------------------- 1 | // Read an INI file into easy-to-access name/value pairs. 2 | 3 | // inih and INIReader are released under the New BSD license (see LICENSE.txt). 4 | // Go to the project home page for more info: 5 | // 6 | // https://github.com/benhoyt/inih 7 | 8 | #include 9 | #include 10 | #include 11 | #include "ini.h" 12 | #include "INIReader.h" 13 | 14 | using std::string; 15 | 16 | INIReader::INIReader(const string& filename) 17 | { 18 | _error = ini_parse(filename.c_str(), ValueHandler, this); 19 | } 20 | 21 | int INIReader::ParseError() const 22 | { 23 | return _error; 24 | } 25 | 26 | string INIReader::Get(const string& section, const string& name, const string& default_value) const 27 | { 28 | string key = MakeKey(section, name); 29 | // Use _values.find() here instead of _values.at() to support pre C++11 compilers 30 | return _values.count(key) ? _values.find(key)->second : default_value; 31 | } 32 | 33 | long INIReader::GetInteger(const string& section, const string& name, long default_value) const 34 | { 35 | string valstr = Get(section, name, ""); 36 | const char* value = valstr.c_str(); 37 | char* end; 38 | // This parses "1234" (decimal) and also "0x4D2" (hex) 39 | long n = strtol(value, &end, 0); 40 | return end > value ? n : default_value; 41 | } 42 | 43 | double INIReader::GetReal(const string& section, const string& name, double default_value) const 44 | { 45 | string valstr = Get(section, name, ""); 46 | const char* value = valstr.c_str(); 47 | char* end; 48 | double n = strtod(value, &end); 49 | return end > value ? n : default_value; 50 | } 51 | 52 | bool INIReader::GetBoolean(const string& section, const string& name, bool default_value) const 53 | { 54 | string valstr = Get(section, name, ""); 55 | // Convert to lower case to make string comparisons case-insensitive 56 | std::transform(valstr.begin(), valstr.end(), valstr.begin(), ::tolower); 57 | if (valstr == "true" || valstr == "yes" || valstr == "on" || valstr == "1") 58 | return true; 59 | else if (valstr == "false" || valstr == "no" || valstr == "off" || valstr == "0") 60 | return false; 61 | else 62 | return default_value; 63 | } 64 | 65 | string INIReader::MakeKey(const string& section, const string& name) 66 | { 67 | string key = section + "=" + name; 68 | // Convert to lower case to make section/name lookups case-insensitive 69 | std::transform(key.begin(), key.end(), key.begin(), ::tolower); 70 | return key; 71 | } 72 | 73 | int INIReader::ValueHandler(void* user, const char* section, const char* name, 74 | const char* value) 75 | { 76 | INIReader* reader = (INIReader*)user; 77 | string key = MakeKey(section, name); 78 | if (reader->_values[key].size() > 0) 79 | reader->_values[key] += "\n"; 80 | reader->_values[key] += value; 81 | return 1; 82 | } 83 | -------------------------------------------------------------------------------- /ThirdParty/inih/INIReader.h: -------------------------------------------------------------------------------- 1 | // Read an INI file into easy-to-access name/value pairs. 2 | 3 | // inih and INIReader are released under the New BSD license (see LICENSE.txt). 4 | // Go to the project home page for more info: 5 | // 6 | // https://github.com/benhoyt/inih 7 | 8 | #ifndef __INIREADER_H__ 9 | #define __INIREADER_H__ 10 | 11 | #include 12 | #include 13 | 14 | // Read an INI file into easy-to-access name/value pairs. (Note that I've gone 15 | // for simplicity here rather than speed, but it should be pretty decent.) 16 | class INIReader 17 | { 18 | public: 19 | // Construct INIReader and parse given filename. See ini.h for more info 20 | // about the parsing. 21 | INIReader(const std::string& filename); 22 | 23 | // Return the result of ini_parse(), i.e., 0 on success, line number of 24 | // first error on parse error, or -1 on file open error. 25 | int ParseError() const; 26 | 27 | // Get a string value from INI file, returning default_value if not found. 28 | std::string Get(const std::string& section, const std::string& name, 29 | const std::string& default_value) const; 30 | 31 | // Get an integer (long) value from INI file, returning default_value if 32 | // not found or not a valid integer (decimal "1234", "-1234", or hex "0x4d2"). 33 | long GetInteger(const std::string& section, const std::string& name, long default_value) const; 34 | 35 | // Get a real (floating point double) value from INI file, returning 36 | // default_value if not found or not a valid floating point value 37 | // according to strtod(). 38 | double GetReal(const std::string& section, const std::string& name, double default_value) const; 39 | 40 | // Get a boolean value from INI file, returning default_value if not found or if 41 | // not a valid true/false value. Valid true values are "true", "yes", "on", "1", 42 | // and valid false values are "false", "no", "off", "0" (not case sensitive). 43 | bool GetBoolean(const std::string& section, const std::string& name, bool default_value) const; 44 | 45 | private: 46 | int _error; 47 | std::map _values; 48 | static std::string MakeKey(const std::string& section, const std::string& name); 49 | static int ValueHandler(void* user, const char* section, const char* name, 50 | const char* value); 51 | }; 52 | 53 | #endif // __INIREADER_H__ 54 | -------------------------------------------------------------------------------- /ThirdParty/inih/ini.c: -------------------------------------------------------------------------------- 1 | /* inih -- simple .INI file parser 2 | 3 | inih is released under the New BSD license (see LICENSE.txt). Go to the project 4 | home page for more info: 5 | 6 | https://github.com/benhoyt/inih 7 | 8 | */ 9 | 10 | #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) 11 | #define _CRT_SECURE_NO_WARNINGS 12 | #endif 13 | 14 | #include 15 | #include 16 | #include 17 | 18 | #include "ini.h" 19 | 20 | #if !INI_USE_STACK 21 | #include 22 | #endif 23 | 24 | #define MAX_SECTION 50 25 | #define MAX_NAME 50 26 | 27 | /* Used by ini_parse_string() to keep track of string parsing state. */ 28 | typedef struct { 29 | const char* ptr; 30 | size_t num_left; 31 | } ini_parse_string_ctx; 32 | 33 | /* Strip whitespace chars off end of given string, in place. Return s. */ 34 | static char* rstrip(char* s) 35 | { 36 | char* p = s + strlen(s); 37 | while (p > s && isspace((unsigned char)(*--p))) 38 | *p = '\0'; 39 | return s; 40 | } 41 | 42 | /* Return pointer to first non-whitespace char in given string. */ 43 | static char* lskip(const char* s) 44 | { 45 | while (*s && isspace((unsigned char)(*s))) 46 | s++; 47 | return (char*)s; 48 | } 49 | 50 | /* Return pointer to first char (of chars) or inline comment in given string, 51 | or pointer to null at end of string if neither found. Inline comment must 52 | be prefixed by a whitespace character to register as a comment. */ 53 | static char* find_chars_or_comment(const char* s, const char* chars) 54 | { 55 | #if INI_ALLOW_INLINE_COMMENTS 56 | int was_space = 0; 57 | while (*s && (!chars || !strchr(chars, *s)) && 58 | !(was_space && strchr(INI_INLINE_COMMENT_PREFIXES, *s))) { 59 | was_space = isspace((unsigned char)(*s)); 60 | s++; 61 | } 62 | #else 63 | while (*s && (!chars || !strchr(chars, *s))) { 64 | s++; 65 | } 66 | #endif 67 | return (char*)s; 68 | } 69 | 70 | /* Version of strncpy that ensures dest (size bytes) is null-terminated. */ 71 | static char* strncpy0(char* dest, const char* src, size_t size) 72 | { 73 | strncpy(dest, src, size); 74 | dest[size - 1] = '\0'; 75 | return dest; 76 | } 77 | 78 | /* See documentation in header file. */ 79 | int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler, 80 | void* user) 81 | { 82 | /* Uses a fair bit of stack (use heap instead if you need to) */ 83 | #if INI_USE_STACK 84 | char line[INI_MAX_LINE]; 85 | #else 86 | char* line; 87 | #endif 88 | char section[MAX_SECTION] = ""; 89 | char prev_name[MAX_NAME] = ""; 90 | 91 | char* start; 92 | char* end; 93 | char* name; 94 | char* value; 95 | int lineno = 0; 96 | int error = 0; 97 | 98 | #if !INI_USE_STACK 99 | line = (char*)malloc(INI_MAX_LINE); 100 | if (!line) { 101 | return -2; 102 | } 103 | #endif 104 | 105 | #if INI_HANDLER_LINENO 106 | #define HANDLER(u, s, n, v) handler(u, s, n, v, lineno) 107 | #else 108 | #define HANDLER(u, s, n, v) handler(u, s, n, v) 109 | #endif 110 | 111 | /* Scan through stream line by line */ 112 | while (reader(line, INI_MAX_LINE, stream) != NULL) { 113 | lineno++; 114 | 115 | start = line; 116 | #if INI_ALLOW_BOM 117 | if (lineno == 1 && (unsigned char)start[0] == 0xEF && 118 | (unsigned char)start[1] == 0xBB && 119 | (unsigned char)start[2] == 0xBF) { 120 | start += 3; 121 | } 122 | #endif 123 | start = lskip(rstrip(start)); 124 | 125 | if (*start == ';' || *start == '#') { 126 | /* Per Python configparser, allow both ; and # comments at the 127 | start of a line */ 128 | } 129 | #if INI_ALLOW_MULTILINE 130 | else if (*prev_name && *start && start > line) { 131 | /* Non-blank line with leading whitespace, treat as continuation 132 | of previous name's value (as per Python configparser). */ 133 | if (!HANDLER(user, section, prev_name, start) && !error) 134 | error = lineno; 135 | } 136 | #endif 137 | else if (*start == '[') { 138 | /* A "[section]" line */ 139 | end = find_chars_or_comment(start + 1, "]"); 140 | if (*end == ']') { 141 | *end = '\0'; 142 | strncpy0(section, start + 1, sizeof(section)); 143 | *prev_name = '\0'; 144 | } 145 | else if (!error) { 146 | /* No ']' found on section line */ 147 | error = lineno; 148 | } 149 | } 150 | else if (*start) { 151 | /* Not a comment, must be a name[=:]value pair */ 152 | end = find_chars_or_comment(start, "=:"); 153 | if (*end == '=' || *end == ':') { 154 | *end = '\0'; 155 | name = rstrip(start); 156 | value = end + 1; 157 | #if INI_ALLOW_INLINE_COMMENTS 158 | end = find_chars_or_comment(value, NULL); 159 | if (*end) 160 | *end = '\0'; 161 | #endif 162 | value = lskip(value); 163 | rstrip(value); 164 | 165 | /* Valid name[=:]value pair found, call handler */ 166 | strncpy0(prev_name, name, sizeof(prev_name)); 167 | if (!HANDLER(user, section, name, value) && !error) 168 | error = lineno; 169 | } 170 | else if (!error) { 171 | /* No '=' or ':' found on name[=:]value line */ 172 | error = lineno; 173 | } 174 | } 175 | 176 | #if INI_STOP_ON_FIRST_ERROR 177 | if (error) 178 | break; 179 | #endif 180 | } 181 | 182 | #if !INI_USE_STACK 183 | free(line); 184 | #endif 185 | 186 | return error; 187 | } 188 | 189 | /* See documentation in header file. */ 190 | int ini_parse_file(FILE* file, ini_handler handler, void* user) 191 | { 192 | return ini_parse_stream((ini_reader)fgets, file, handler, user); 193 | } 194 | 195 | /* See documentation in header file. */ 196 | int ini_parse(const char* filename, ini_handler handler, void* user) 197 | { 198 | FILE* file; 199 | int error; 200 | 201 | file = fopen(filename, "r"); 202 | if (!file) 203 | return -1; 204 | error = ini_parse_file(file, handler, user); 205 | fclose(file); 206 | return error; 207 | } 208 | 209 | /* An ini_reader function to read the next line from a string buffer. This 210 | is the fgets() equivalent used by ini_parse_string(). */ 211 | static char* ini_reader_string(char* str, int num, void* stream) { 212 | ini_parse_string_ctx* ctx = (ini_parse_string_ctx*)stream; 213 | const char* ctx_ptr = ctx->ptr; 214 | size_t ctx_num_left = ctx->num_left; 215 | char* strp = str; 216 | char c; 217 | 218 | if (ctx_num_left == 0 || num < 2) 219 | return NULL; 220 | 221 | while (num > 1 && ctx_num_left != 0) { 222 | c = *ctx_ptr++; 223 | ctx_num_left--; 224 | *strp++ = c; 225 | if (c == '\n') 226 | break; 227 | num--; 228 | } 229 | 230 | *strp = '\0'; 231 | ctx->ptr = ctx_ptr; 232 | ctx->num_left = ctx_num_left; 233 | return str; 234 | } 235 | 236 | /* See documentation in header file. */ 237 | int ini_parse_string(const char* string, ini_handler handler, void* user) { 238 | ini_parse_string_ctx ctx; 239 | 240 | ctx.ptr = string; 241 | ctx.num_left = strlen(string); 242 | return ini_parse_stream((ini_reader)ini_reader_string, &ctx, handler, 243 | user); 244 | } 245 | -------------------------------------------------------------------------------- /ThirdParty/inih/ini.h: -------------------------------------------------------------------------------- 1 | /* inih -- simple .INI file parser 2 | 3 | inih is released under the New BSD license (see LICENSE.txt). Go to the project 4 | home page for more info: 5 | 6 | https://github.com/benhoyt/inih 7 | 8 | */ 9 | 10 | #ifndef __INI_H__ 11 | #define __INI_H__ 12 | 13 | /* Make this header file easier to include in C++ code */ 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | #include 19 | 20 | /* Nonzero if ini_handler callback should accept lineno parameter. */ 21 | #ifndef INI_HANDLER_LINENO 22 | #define INI_HANDLER_LINENO 0 23 | #endif 24 | 25 | /* Typedef for prototype of handler function. */ 26 | #if INI_HANDLER_LINENO 27 | typedef int (*ini_handler)(void* user, const char* section, 28 | const char* name, const char* value, 29 | int lineno); 30 | #else 31 | typedef int (*ini_handler)(void* user, const char* section, 32 | const char* name, const char* value); 33 | #endif 34 | 35 | /* Typedef for prototype of fgets-style reader function. */ 36 | typedef char* (*ini_reader)(char* str, int num, void* stream); 37 | 38 | /* Parse given INI-style file. May have [section]s, name=value pairs 39 | (whitespace stripped), and comments starting with ';' (semicolon). Section 40 | is "" if name=value pair parsed before any section heading. name:value 41 | pairs are also supported as a concession to Python's configparser. 42 | 43 | For each name=value pair parsed, call handler function with given user 44 | pointer as well as section, name, and value (data only valid for duration 45 | of handler call). Handler should return nonzero on success, zero on error. 46 | 47 | Returns 0 on success, line number of first error on parse error (doesn't 48 | stop on first error), -1 on file open error, or -2 on memory allocation 49 | error (only when INI_USE_STACK is zero). 50 | */ 51 | int ini_parse(const char* filename, ini_handler handler, void* user); 52 | 53 | /* Same as ini_parse(), but takes a FILE* instead of filename. This doesn't 54 | close the file when it's finished -- the caller must do that. */ 55 | int ini_parse_file(FILE* file, ini_handler handler, void* user); 56 | 57 | /* Same as ini_parse(), but takes an ini_reader function pointer instead of 58 | filename. Used for implementing custom or string-based I/O (see also 59 | ini_parse_string). */ 60 | int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler, 61 | void* user); 62 | 63 | /* Same as ini_parse(), but takes a zero-terminated string with the INI data 64 | instead of a file. Useful for parsing INI data from a network socket or 65 | already in memory. */ 66 | int ini_parse_string(const char* string, ini_handler handler, void* user); 67 | 68 | /* Nonzero to allow multi-line value parsing, in the style of Python's 69 | configparser. If allowed, ini_parse() will call the handler with the same 70 | name for each subsequent line parsed. */ 71 | #ifndef INI_ALLOW_MULTILINE 72 | #define INI_ALLOW_MULTILINE 1 73 | #endif 74 | 75 | /* Nonzero to allow a UTF-8 BOM sequence (0xEF 0xBB 0xBF) at the start of 76 | the file. See http://code.google.com/p/inih/issues/detail?id=21 */ 77 | #ifndef INI_ALLOW_BOM 78 | #define INI_ALLOW_BOM 1 79 | #endif 80 | 81 | /* Nonzero to allow inline comments (with valid inline comment characters 82 | specified by INI_INLINE_COMMENT_PREFIXES). Set to 0 to turn off and match 83 | Python 3.2+ configparser behaviour. */ 84 | #ifndef INI_ALLOW_INLINE_COMMENTS 85 | #define INI_ALLOW_INLINE_COMMENTS 1 86 | #endif 87 | #ifndef INI_INLINE_COMMENT_PREFIXES 88 | #define INI_INLINE_COMMENT_PREFIXES ";" 89 | #endif 90 | 91 | /* Nonzero to use stack, zero to use heap (malloc/free). */ 92 | #ifndef INI_USE_STACK 93 | #define INI_USE_STACK 1 94 | #endif 95 | 96 | /* Stop parsing on first error (default is to keep parsing). */ 97 | #ifndef INI_STOP_ON_FIRST_ERROR 98 | #define INI_STOP_ON_FIRST_ERROR 0 99 | #endif 100 | 101 | /* Maximum line length for any line in INI file. */ 102 | #ifndef INI_MAX_LINE 103 | #define INI_MAX_LINE 200 104 | #endif 105 | 106 | #ifdef __cplusplus 107 | } 108 | #endif 109 | 110 | #endif /* __INI_H__ */ 111 | -------------------------------------------------------------------------------- /config.ini: -------------------------------------------------------------------------------- 1 | [FrontServer] 2 | Address = tcp://127.0.0.1:17001 3 | 4 | [LoginField] 5 | TradingDay = 6 | BrokerID = 7 | UserID = 8 | Password = 9 | DataLevel = 10 | 11 | [Instruments] 12 | PathSH = Instruments/sh.instruments 13 | PathSZ = Instruments/sz.instruments 14 | 15 | [SavePath] 16 | MdDir = Data/MarketData/ 17 | LogDir = Data/Log/ 18 | 19 | [Buffer] 20 | InitSize = 1 21 | -------------------------------------------------------------------------------- /logger.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include // for setfill, setw 6 | 7 | namespace common { 8 | class Logger{ 9 | public: 10 | static std::string time_in_hh_mm_ss_mmm() { 11 | using namespace std::chrono; 12 | // get current time 13 | auto now = system_clock::now(); 14 | 15 | // get number of milliseconds for the current second 16 | // (remainder after division into seconds) 17 | auto ms = duration_cast(now.time_since_epoch()) % 1000; 18 | 19 | // convert to std::time_t in order to convert to std::tm (broken time) 20 | auto timer = system_clock::to_time_t(now); 21 | 22 | // convert to broken time 23 | std::tm bt = *std::localtime(&timer); 24 | 25 | std::ostringstream oss; 26 | 27 | oss << std::put_time(&bt, "%T"); // HH:MM:SS 28 | oss << '.' << std::setfill('0') << std::setw(3) << ms.count(); 29 | 30 | return oss.str(); 31 | } 32 | 33 | template 34 | static void t_out(const char* fmt, Args... args) { 35 | fprintf(stdout, "[%s] ", time_in_hh_mm_ss_mmm().c_str()); 36 | fprintf(stdout, fmt, args...); 37 | } 38 | 39 | template 40 | static void t_err(const char* fmt, Args... args) { 41 | fprintf(stderr, "[%s] ", time_in_hh_mm_ss_mmm().c_str()); 42 | fprintf(stderr, fmt, args...); 43 | } 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /ltsmdspi.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include "ltsmdspi.h" 12 | #include "logger.hpp" 13 | 14 | std::string LtsMdSpi::getCurrentDate() { 15 | std::time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); 16 | char buf[100]; 17 | std::strftime(buf, sizeof(buf), "%Y-%m-%d", std::localtime(&now)); 18 | return std::string(buf); 19 | } 20 | 21 | LtsMdSpi::LtsMdSpi(const std::string& config_file) : 22 | config_(config_file) { 23 | std::string dataDir = config_.Get("SavePath", "MdDir", ""); 24 | std::string logDir = config_.Get("SavePath", "LogDir", ""); 25 | 26 | std::string currentDate = getCurrentDate(); 27 | 28 | if (access(dataDir.c_str(), F_OK && W_OK) < 0) { 29 | mkdir(dataDir.c_str(), 0751); 30 | } 31 | std::string md_path = dataDir + "MarketData_" + currentDate; 32 | 33 | if (access(logDir.c_str(), F_OK && W_OK) < 0) { 34 | mkdir(logDir.c_str(), 0751); 35 | } 36 | std::string output_path = logDir + "output_" + currentDate; 37 | std::string error_path = logDir + "error_" + currentDate; 38 | freopen(output_path.c_str(), "w", stdout); 39 | freopen(error_path.c_str(), "w", stderr); 40 | 41 | // 以 1GB 为单位 42 | writer_ = new mem::Writer((size_t)config_.GetInteger("Buffer", "InitSize", 1)<<30, md_path); 43 | 44 | reqID_ = 0; 45 | api_ = CSecurityFtdcL2MDUserApi::CreateFtdcL2MDUserApi(); 46 | common::Logger::t_out("Market data spi created...\n"); 47 | } 48 | 49 | LtsMdSpi::~LtsMdSpi() { 50 | 51 | api_->Release(); 52 | delete writer_; 53 | common::Logger::t_out("Market data spi deleted...\n"); 54 | fclose(stdout); 55 | fclose(stderr); 56 | } 57 | 58 | void LtsMdSpi::start_serve() { 59 | api_->RegisterSpi(this); 60 | std::string addr = config_.Get("FrontServer", "Address", ""); 61 | api_->RegisterFront((char *)addr.c_str()); 62 | api_->Init(); 63 | // 为了实现捕获信号退出,在主线程阻塞而不在这里Join 64 | // api_->Join(); 65 | } 66 | 67 | 68 | void LtsMdSpi::OnFrontConnected() { 69 | CSecurityFtdcUserLoginField loginField; 70 | memset(&loginField, 0, sizeof(loginField)); 71 | std::string BrokerID = config_.Get("LoginField", "BrokerID", ""); 72 | std::string UserID = config_.Get("LoginField", "UserID", ""); 73 | std::string Password = config_.Get("LoginField", "Password", ""); 74 | strncpy(loginField.BrokerID, BrokerID.c_str(), sizeof(loginField.BrokerID)); 75 | strncpy(loginField.UserID, UserID.c_str(), sizeof(loginField.UserID)); 76 | strncpy(loginField.Password, Password.c_str(), sizeof(loginField.Password)); 77 | common::Logger::t_out("Login with: user = %s, pwd = %s\n", loginField.UserID, loginField.Password); 78 | api_->ReqUserLogin(&loginField, reqID_++); 79 | } 80 | 81 | void LtsMdSpi::OnRspUserLogin(CSecurityFtdcUserLoginField *pUserLogin, 82 | CSecurityFtdcRspInfoField *pRspInfo, 83 | int nRequestID, bool bIsLast) { 84 | if (pRspInfo == nullptr || pRspInfo->ErrorID == 0) { 85 | const std::string SH_FILE = std::move(config_.Get("Instruments", "PathSH", "")); 86 | const std::string SZ_FILE = std::move(config_.Get("Instruments", "PathSZ", "")); 87 | const std::string SH_ID = "SSE"; 88 | const std::string SZ_ID = "SZE"; 89 | 90 | subscribe_instruments_in_file_(SH_FILE, SH_ID); 91 | subscribe_instruments_in_file_(SH_FILE, SZ_ID); 92 | } else { 93 | common::Logger::t_err("Login failed: %s(errno: %d)\n", pRspInfo->ErrorMsg, 94 | pRspInfo->ErrorID); 95 | } 96 | } 97 | 98 | // 订阅回复 99 | void LtsMdSpi::OnRspSubL2MarketData( 100 | CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, 101 | CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { 102 | if (pRspInfo == nullptr || pRspInfo->ErrorID == 0) { 103 | if (bIsLast) { 104 | common::Logger::t_out("Subscribe to instruments (data) succeed.\n"); 105 | } 106 | } else { 107 | common::Logger::t_err("Subscribe market data failed: %s(errno: %d)\n", pRspInfo->ErrorMsg, 108 | pRspInfo->ErrorID); 109 | } 110 | } 111 | 112 | void LtsMdSpi::OnRspSubL2Index( 113 | CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, 114 | CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { 115 | if (pRspInfo == nullptr || pRspInfo->ErrorID == 0) { 116 | if (bIsLast) { 117 | common::Logger::t_out("Subscribe to instruments (index) succeed.\n"); 118 | } 119 | } else { 120 | common::Logger::t_err("Subscribe market index failed: %s(errno: %d)\n", pRspInfo->ErrorMsg, 121 | pRspInfo->ErrorID); 122 | } 123 | } 124 | 125 | void LtsMdSpi::OnRspSubL2OrderAndTrade(CSecurityFtdcRspInfoField *pRspInfo, 126 | int nRequestID, bool bIsLast) { 127 | if (pRspInfo == nullptr || pRspInfo->ErrorID == 0) { 128 | if (bIsLast) { 129 | common::Logger::t_out("Subscribe to instruments of (order) succeed.\n"); 130 | } 131 | } else { 132 | common::Logger::t_err("Subscribe market order failed: %s(errno: %d)\n", pRspInfo->ErrorMsg, 133 | pRspInfo->ErrorID); 134 | } 135 | } 136 | 137 | void LtsMdSpi::OnRtnL2MarketData( 138 | CSecurityFtdcL2MarketDataField *pL2MarketData) { 139 | // printf("ticker header size = %d\n", sizeof(h)); // 24 140 | writer_->write_market_data((const char *)pL2MarketData, sizeof(CSecurityFtdcL2MarketDataField), 1); 141 | } 142 | 143 | void LtsMdSpi::OnRtnL2Index(CSecurityFtdcL2IndexField *pL2Index) { 144 | // printf("ticker header size = %d\n", sizeof(h)); // 24 145 | writer_->write_market_data((const char *)pL2Index, sizeof(CSecurityFtdcL2IndexField), 2); 146 | } 147 | 148 | void LtsMdSpi::OnRtnL2Order(CSecurityFtdcL2OrderField *pL2Order) { 149 | // printf("ticker header size = %d\n", sizeof(h)); // 24 150 | writer_->write_market_data((const char *)pL2Order, sizeof(CSecurityFtdcL2OrderField), 3); 151 | } 152 | 153 | void LtsMdSpi::OnRtnL2Trade(CSecurityFtdcL2TradeField *pL2Trade) { 154 | // printf("ticker header size = %d\n", sizeof(h)); // 24 155 | writer_->write_market_data((const char *)pL2Trade, sizeof(CSecurityFtdcL2TradeField), 4); 156 | } 157 | 158 | void LtsMdSpi::subscribe_instruments_in_file_(const std::string &filePath, 159 | const std::string &exchangeID) { 160 | std::set subscriptions; 161 | std::ifstream ifs; 162 | ifs.open(filePath); 163 | const char delim('\n'); 164 | std::string instrument; 165 | while (getline(ifs, instrument, delim)) { 166 | subscriptions.insert(std::move(instrument)); 167 | } 168 | ifs.clear(); 169 | ifs.close(); 170 | 171 | char **subs = new char *[subscriptions.size()]; 172 | int idx = 0; 173 | for (auto &str : subscriptions) { 174 | subs[idx++] = (char *)str.c_str(); 175 | } 176 | api_->SubscribeL2MarketData(subs, idx, (char *)exchangeID.c_str()); 177 | api_->SubscribeL2Index(subs, idx, (char *)exchangeID.c_str()); 178 | api_->SubscribeL2OrderAndTrade(); 179 | delete[] subs; 180 | } 181 | 182 | void LtsMdSpi::OnFrontDisconnected(int reason) { 183 | common::Logger::t_err("Disconnected from front server (reason: %d).\n\t" 184 | "Reconnecting...\n", reason); 185 | std::string addr = config_.Get("FrontServer", "Address", ""); 186 | api_->RegisterFront((char *)addr.c_str()); 187 | } 188 | -------------------------------------------------------------------------------- /ltsmdspi.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | #include "ThirdParty/inih/INIReader.h" 6 | 7 | #include "LTS_API/SecurityFtdcL2MDUserApi.h" 8 | #include "mmap_buffer/mmapper.h" 9 | 10 | using namespace _LTS_; 11 | 12 | class LtsMdSpi : public CSecurityFtdcL2MDUserSpi { 13 | public: 14 | explicit LtsMdSpi(const std::string& config_file); 15 | ~LtsMdSpi(); 16 | 17 | static std::string getCurrentDate(); 18 | 19 | void start_serve(); 20 | 21 | protected: 22 | // 登录 23 | void OnFrontConnected() override; 24 | void OnRspUserLogin(CSecurityFtdcUserLoginField *pUserLogin, 25 | CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, 26 | bool bIsLast) override; 27 | // 订阅 28 | void OnRspSubL2MarketData( 29 | CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, 30 | CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) override; 31 | void 32 | OnRspSubL2Index(CSecurityFtdcSpecificInstrumentField *pSpecificInstrument, 33 | CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, 34 | bool bIsLast) override; 35 | void OnRspSubL2OrderAndTrade(CSecurityFtdcRspInfoField *pRspInfo, 36 | int nRequestID, bool bIsLast) override; 37 | // 接收 38 | void OnRtnL2MarketData(CSecurityFtdcL2MarketDataField *pL2MarketData) override; 39 | void OnRtnL2Index(CSecurityFtdcL2IndexField *pL2Index) override; 40 | void OnRtnL2Order(CSecurityFtdcL2OrderField *pL2Order) override; 41 | void OnRtnL2Trade(CSecurityFtdcL2TradeField *pL2Trade) override; 42 | 43 | // 掉线处理 44 | void OnFrontDisconnected(int reason) override; 45 | 46 | private: 47 | CSecurityFtdcL2MDUserApi *api_; 48 | INIReader config_; 49 | 50 | // requestID 51 | int reqID_; 52 | 53 | // void read_instruments_from_file_(const std::string& filePath, const 54 | // std::string& exchangeID); 55 | void subscribe_instruments_in_file_(const std::string &filePath, 56 | const std::string &exchangeID); 57 | 58 | mem::Writer* writer_; 59 | }; 60 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | #include "ltsmdspi.h" 9 | 10 | // kill -l: signal 1~64 11 | int signaled = 0; 12 | std::mutex signal_mu; 13 | std::condition_variable signal_cond; 14 | 15 | void signal_handler(int sig) { 16 | // use signal handler to avoid unsafe quit 17 | std::lock_guard lg(signal_mu); 18 | signaled = sig; 19 | signal_cond.notify_one(); 20 | } 21 | 22 | int main(int argc, const char *argv[]) { 23 | if (argc != 2) { 24 | fprintf(stdout, "Usage: %s \n", argv[0]); 25 | exit(-1); 26 | } 27 | 28 | // set handler for signal 29 | signal(SIGINT, signal_handler); 30 | signal(SIGTERM, signal_handler); 31 | 32 | LtsMdSpi spi(argv[1]); 33 | // LtsMdSpi spi(std::string(argv[1])); 34 | spi.start_serve(); 35 | 36 | { 37 | std::unique_lock ul(signal_mu); 38 | signal_cond.wait(ul, []{return signaled != 0;}); 39 | } 40 | 41 | fprintf(stderr, "Terminated by signal: %d\n", signaled); 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /mmap_buffer/mmapper.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include // for open() 4 | #include // for close() 5 | #include // for memcpy() 6 | 7 | #include "mmapper.h" 8 | #include "../timing.hpp" 9 | #include "../logger.hpp" 10 | 11 | using namespace mem; 12 | 13 | Writer::Writer(size_t size_lim, std::string file_path): 14 | size_lim_(size_lim), file_path_(file_path), cur_pos_(0), pending_(0) 15 | { 16 | int fd = open(file_path_.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); 17 | if (fd == -1) { 18 | common::Logger::t_err("Open file %s failed.\n", file_path_.c_str()); 19 | exit(-1); 20 | } 21 | 22 | // solve the bus error problem: 23 | // we should allocate space for the file first. 24 | lseek(fd, size_lim_-1, SEEK_SET); 25 | write(fd,"",1); 26 | 27 | mem_file_ptr_ = mmap(0, size_lim_, PROT_WRITE | PROT_READ, MAP_SHARED, fd, 0); 28 | if (mem_file_ptr_ == MAP_FAILED) { 29 | common::Logger::t_err("mmap failed.\n"); 30 | exit(-1); 31 | } 32 | 33 | spinlock_.clear(std::memory_order_release); 34 | close(fd); 35 | } 36 | 37 | Writer::~Writer() { 38 | if (munmap(mem_file_ptr_, size_lim_) == -1) { 39 | common::Logger::t_err("munmap failed.\n"); 40 | } 41 | // resize the file to actual size 42 | truncate(file_path_.c_str(), cur_pos_); 43 | common::Logger::t_out("Safely quit mmap\n"); 44 | mem_file_ptr_ = nullptr; 45 | } 46 | 47 | void Writer::write_data(const char* data, size_t len) { 48 | /* 这两条语句中间可能被打断,并不是安全的 49 | size_t old_pos = cur_pos_.load(); 50 | cur_pos_ += len; 51 | */ 52 | while(spinlock_.test_and_set(std::memory_order_acquire)) { 53 | // acquire spinlock 54 | // atomically set flag to true and return previous value 55 | } 56 | size_t old_pos = cur_pos_; 57 | cur_pos_ += len; 58 | if (cur_pos_ > size_lim_) { 59 | remap(size_lim_ << 1); 60 | } 61 | spinlock_.clear(std::memory_order_release); // release spinlock 62 | 63 | pending_ += 1; 64 | std::memcpy((char *)mem_file_ptr_ + old_pos, data, len); 65 | pending_ -= 1; 66 | } 67 | 68 | void Writer::remap(size_t new_size) { 69 | // should be very time consuming, try to avoid 70 | 71 | // wait for all pending memcpy 72 | while (pending_ != 0) { 73 | } 74 | 75 | void* new_addr = mremap(mem_file_ptr_, size_lim_, new_size, MREMAP_MAYMOVE); 76 | if (new_addr == MAP_FAILED) { 77 | common::Logger::t_err("failed when try to remap...\n"); 78 | exit(-1); 79 | } 80 | 81 | 82 | // extend file 83 | int fd = open(file_path_.c_str(), O_RDWR); 84 | if (fd == -1) { 85 | common::Logger::t_err("open file %s failed.\n", file_path_.c_str()); 86 | exit(-1); 87 | } 88 | lseek(fd, new_size-1, SEEK_SET); 89 | write(fd,"",1); 90 | close(fd); 91 | 92 | if (new_addr != mem_file_ptr_) { 93 | common::Logger::t_out("REMAP: map address changed from %p to %p...\n", mem_file_ptr_, new_addr); 94 | mem_file_ptr_ = new_addr; 95 | } 96 | size_lim_ = new_size; 97 | 98 | common::Logger::t_out("REMAP: extend limit to %08x\n", new_size); 99 | } 100 | 101 | 102 | void Writer::write_market_data(const char* data, size_t len, uint32_t msg_id) { 103 | 104 | while(spinlock_.test_and_set(std::memory_order_acquire)) { 105 | // acquire spinlock 106 | // atomically set flag to true and return previous value 107 | } 108 | size_t old_pos = cur_pos_; 109 | cur_pos_ += len + sizeof(common::tick_header); 110 | 111 | // overflow? 112 | if (cur_pos_ > size_lim_) { 113 | remap(size_lim_ << 1); 114 | } 115 | spinlock_.clear(std::memory_order_release); // release spinlock 116 | 117 | pending_ += 1; 118 | // write header 119 | common::tick_header::init((char *)mem_file_ptr_ + old_pos); 120 | common::tick_header *header = (common::tick_header *)((char *)mem_file_ptr_ + old_pos); 121 | header->msg_id = msg_id; 122 | header->body_size = len; 123 | // write body 124 | std::memcpy((char *)mem_file_ptr_ + old_pos + sizeof(common::tick_header), data, len); 125 | 126 | pending_ -= 1; 127 | } 128 | -------------------------------------------------------------------------------- /mmap_buffer/mmapper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace mem { 6 | class Writer { 7 | public: 8 | explicit Writer(size_t size_lim, const std::string file_path); 9 | ~Writer(); 10 | void write_data(const char* data, size_t len); 11 | 12 | // for market data only 13 | void write_market_data(const char* data, size_t len, uint32_t msg_id); 14 | private: 15 | size_t size_lim_; 16 | void* mem_file_ptr_; 17 | std::string file_path_; 18 | // UPDATE: use a spinlock, so we don't need it to be atomic 19 | size_t cur_pos_; 20 | 21 | // for remap when overflow 22 | std::atomic_flag spinlock_; 23 | std::atomic pending_; 24 | void remap(size_t new_size); 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /timing.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #define PACKED __attribute__((packed)) 8 | #define unlikely(cond) __builtin_expect(!!(cond), 0) 9 | 10 | 11 | namespace common { 12 | 13 | constexpr static size_t nanos_per_second = 1'000'000'000; 14 | 15 | static inline uint64_t local_timestamp_ns() { 16 | struct timespec ts; 17 | if (unlikely(clock_gettime(CLOCK_REALTIME, &ts) == -1)) 18 | return 0; 19 | return ts.tv_sec * nanos_per_second + ts.tv_nsec; 20 | } 21 | 22 | struct tick_header { 23 | uint64_t timestamp = 0; 24 | // per msg seq id (not global seq id), 0 means not available 25 | uint64_t seq_id = 0; 26 | uint32_t msg_id = 0; 27 | uint32_t body_size = 0; // tick header itself is not involved 28 | 29 | inline void init() { 30 | timestamp = common::local_timestamp_ns(); 31 | seq_id = 0; 32 | msg_id = 0; 33 | body_size = 0; 34 | } 35 | 36 | inline static void init(char *addr) { 37 | auto header = (tick_header *)addr; 38 | header->timestamp = common::local_timestamp_ns(); 39 | header->seq_id = 0; 40 | header->msg_id = 0; 41 | header->body_size = 0; 42 | } 43 | 44 | } PACKED; 45 | } 46 | --------------------------------------------------------------------------------