github.com/dolthub/go-mysql-server@v0.18.0/sql/encodings/utf8mb3_general_ci.go (about) 1 // Copyright 2022 Dolthub, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package encodings 16 17 // Utf8mb3_general_ci_RuneWeight returns the weight of a given rune based on its relational sort order from 18 // the `utf8mb3_general_ci` collation. 19 func Utf8mb3_general_ci_RuneWeight(r rune) int32 { 20 weight, ok := utf8mb3_general_ci_Weights[r] 21 if ok { 22 return weight 23 } else if r >= 659 && r <= 836 { 24 return r - 342 25 } else if r >= 1415 && r <= 7679 { 26 return r - 586 27 } else if r >= 8189 && r <= 8544 { 28 return r - 1040 29 } else if r >= 8575 && r <= 9398 { 30 return r - 1056 31 } else if r >= 9449 && r <= 55295 { 32 return r - 1082 33 } else if r >= 57345 && r <= 65313 { 34 return r - 3130 35 } else if r >= 65371 && r <= 65535 { 36 return r - 3156 37 } else { 38 return 2147483647 39 } 40 } 41 42 // utf8mb3_general_ci_Weights contain a map from rune to weight for the `utf8mb3_general_ci` collation. The 43 // map primarily contains mappings that have a random order. Mappings that fit into a sequential range (and are long 44 // enough) are defined in the calling function to save space. 45 var utf8mb3_general_ci_Weights = map[rune]int32{ 46 0: 0, 47 1: 1, 48 2: 2, 49 3: 3, 50 4: 4, 51 5: 5, 52 6: 6, 53 7: 7, 54 8: 8, 55 9: 9, 56 10: 10, 57 11: 11, 58 12: 12, 59 13: 13, 60 14: 14, 61 15: 15, 62 16: 16, 63 17: 17, 64 18: 18, 65 19: 19, 66 20: 20, 67 21: 21, 68 22: 22, 69 23: 23, 70 24: 24, 71 25: 25, 72 26: 26, 73 27: 27, 74 28: 28, 75 29: 29, 76 30: 30, 77 31: 31, 78 32: 32, 79 33: 33, 80 34: 34, 81 35: 35, 82 36: 36, 83 37: 37, 84 38: 38, 85 39: 39, 86 40: 40, 87 41: 41, 88 42: 42, 89 43: 43, 90 44: 44, 91 45: 45, 92 46: 46, 93 47: 47, 94 48: 48, 95 49: 49, 96 50: 50, 97 51: 51, 98 52: 52, 99 53: 53, 100 54: 54, 101 55: 55, 102 56: 56, 103 57: 57, 104 58: 58, 105 59: 59, 106 60: 60, 107 61: 61, 108 62: 62, 109 63: 63, 110 64: 64, 111 65: 65, 112 97: 65, 113 192: 65, 114 193: 65, 115 194: 65, 116 195: 65, 117 196: 65, 118 197: 65, 119 224: 65, 120 225: 65, 121 226: 65, 122 227: 65, 123 228: 65, 124 229: 65, 125 256: 65, 126 257: 65, 127 258: 65, 128 259: 65, 129 260: 65, 130 261: 65, 131 461: 65, 132 462: 65, 133 478: 65, 134 479: 65, 135 480: 65, 136 481: 65, 137 506: 65, 138 507: 65, 139 512: 65, 140 513: 65, 141 514: 65, 142 515: 65, 143 550: 65, 144 551: 65, 145 7680: 65, 146 7681: 65, 147 7840: 65, 148 7841: 65, 149 7842: 65, 150 7843: 65, 151 7844: 65, 152 7845: 65, 153 7846: 65, 154 7847: 65, 155 7848: 65, 156 7849: 65, 157 7850: 65, 158 7851: 65, 159 7852: 65, 160 7853: 65, 161 7854: 65, 162 7855: 65, 163 7856: 65, 164 7857: 65, 165 7858: 65, 166 7859: 65, 167 7860: 65, 168 7861: 65, 169 7862: 65, 170 7863: 65, 171 66: 66, 172 98: 66, 173 7682: 66, 174 7683: 66, 175 7684: 66, 176 7685: 66, 177 7686: 66, 178 7687: 66, 179 67: 67, 180 99: 67, 181 199: 67, 182 231: 67, 183 262: 67, 184 263: 67, 185 264: 67, 186 265: 67, 187 266: 67, 188 267: 67, 189 268: 67, 190 269: 67, 191 7688: 67, 192 7689: 67, 193 68: 68, 194 100: 68, 195 270: 68, 196 271: 68, 197 7690: 68, 198 7691: 68, 199 7692: 68, 200 7693: 68, 201 7694: 68, 202 7695: 68, 203 7696: 68, 204 7697: 68, 205 7698: 68, 206 7699: 68, 207 69: 69, 208 101: 69, 209 200: 69, 210 201: 69, 211 202: 69, 212 203: 69, 213 232: 69, 214 233: 69, 215 234: 69, 216 235: 69, 217 274: 69, 218 275: 69, 219 276: 69, 220 277: 69, 221 278: 69, 222 279: 69, 223 280: 69, 224 281: 69, 225 282: 69, 226 283: 69, 227 516: 69, 228 517: 69, 229 518: 69, 230 519: 69, 231 552: 69, 232 553: 69, 233 7700: 69, 234 7701: 69, 235 7702: 69, 236 7703: 69, 237 7704: 69, 238 7705: 69, 239 7706: 69, 240 7707: 69, 241 7708: 69, 242 7709: 69, 243 7864: 69, 244 7865: 69, 245 7866: 69, 246 7867: 69, 247 7868: 69, 248 7869: 69, 249 7870: 69, 250 7871: 69, 251 7872: 69, 252 7873: 69, 253 7874: 69, 254 7875: 69, 255 7876: 69, 256 7877: 69, 257 7878: 69, 258 7879: 69, 259 70: 70, 260 102: 70, 261 7710: 70, 262 7711: 70, 263 71: 71, 264 103: 71, 265 284: 71, 266 285: 71, 267 286: 71, 268 287: 71, 269 288: 71, 270 289: 71, 271 290: 71, 272 291: 71, 273 486: 71, 274 487: 71, 275 500: 71, 276 501: 71, 277 7712: 71, 278 7713: 71, 279 72: 72, 280 104: 72, 281 292: 72, 282 293: 72, 283 542: 72, 284 543: 72, 285 7714: 72, 286 7715: 72, 287 7716: 72, 288 7717: 72, 289 7718: 72, 290 7719: 72, 291 7720: 72, 292 7721: 72, 293 7722: 72, 294 7723: 72, 295 7830: 72, 296 73: 73, 297 105: 73, 298 204: 73, 299 205: 73, 300 206: 73, 301 207: 73, 302 236: 73, 303 237: 73, 304 238: 73, 305 239: 73, 306 296: 73, 307 297: 73, 308 298: 73, 309 299: 73, 310 300: 73, 311 301: 73, 312 302: 73, 313 303: 73, 314 304: 73, 315 305: 73, 316 463: 73, 317 464: 73, 318 520: 73, 319 521: 73, 320 522: 73, 321 523: 73, 322 7724: 73, 323 7725: 73, 324 7726: 73, 325 7727: 73, 326 7880: 73, 327 7881: 73, 328 7882: 73, 329 7883: 73, 330 74: 74, 331 106: 74, 332 308: 74, 333 309: 74, 334 496: 74, 335 75: 75, 336 107: 75, 337 310: 75, 338 311: 75, 339 488: 75, 340 489: 75, 341 7728: 75, 342 7729: 75, 343 7730: 75, 344 7731: 75, 345 7732: 75, 346 7733: 75, 347 76: 76, 348 108: 76, 349 313: 76, 350 314: 76, 351 315: 76, 352 316: 76, 353 317: 76, 354 318: 76, 355 7734: 76, 356 7735: 76, 357 7736: 76, 358 7737: 76, 359 7738: 76, 360 7739: 76, 361 7740: 76, 362 7741: 76, 363 77: 77, 364 109: 77, 365 7742: 77, 366 7743: 77, 367 7744: 77, 368 7745: 77, 369 7746: 77, 370 7747: 77, 371 78: 78, 372 110: 78, 373 209: 78, 374 241: 78, 375 323: 78, 376 324: 78, 377 325: 78, 378 326: 78, 379 327: 78, 380 328: 78, 381 504: 78, 382 505: 78, 383 7748: 78, 384 7749: 78, 385 7750: 78, 386 7751: 78, 387 7752: 78, 388 7753: 78, 389 7754: 78, 390 7755: 78, 391 79: 79, 392 111: 79, 393 210: 79, 394 211: 79, 395 212: 79, 396 213: 79, 397 214: 79, 398 242: 79, 399 243: 79, 400 244: 79, 401 245: 79, 402 246: 79, 403 332: 79, 404 333: 79, 405 334: 79, 406 335: 79, 407 336: 79, 408 337: 79, 409 416: 79, 410 417: 79, 411 465: 79, 412 466: 79, 413 490: 79, 414 491: 79, 415 492: 79, 416 493: 79, 417 524: 79, 418 525: 79, 419 526: 79, 420 527: 79, 421 554: 79, 422 555: 79, 423 556: 79, 424 557: 79, 425 558: 79, 426 559: 79, 427 560: 79, 428 561: 79, 429 7756: 79, 430 7757: 79, 431 7758: 79, 432 7759: 79, 433 7760: 79, 434 7761: 79, 435 7762: 79, 436 7763: 79, 437 7884: 79, 438 7885: 79, 439 7886: 79, 440 7887: 79, 441 7888: 79, 442 7889: 79, 443 7890: 79, 444 7891: 79, 445 7892: 79, 446 7893: 79, 447 7894: 79, 448 7895: 79, 449 7896: 79, 450 7897: 79, 451 7898: 79, 452 7899: 79, 453 7900: 79, 454 7901: 79, 455 7902: 79, 456 7903: 79, 457 7904: 79, 458 7905: 79, 459 7906: 79, 460 7907: 79, 461 80: 80, 462 112: 80, 463 7764: 80, 464 7765: 80, 465 7766: 80, 466 7767: 80, 467 81: 81, 468 113: 81, 469 82: 82, 470 114: 82, 471 340: 82, 472 341: 82, 473 342: 82, 474 343: 82, 475 344: 82, 476 345: 82, 477 528: 82, 478 529: 82, 479 530: 82, 480 531: 82, 481 7768: 82, 482 7769: 82, 483 7770: 82, 484 7771: 82, 485 7772: 82, 486 7773: 82, 487 7774: 82, 488 7775: 82, 489 83: 83, 490 115: 83, 491 223: 83, 492 346: 83, 493 347: 83, 494 348: 83, 495 349: 83, 496 350: 83, 497 351: 83, 498 352: 83, 499 353: 83, 500 383: 83, 501 536: 83, 502 537: 83, 503 7776: 83, 504 7777: 83, 505 7778: 83, 506 7779: 83, 507 7780: 83, 508 7781: 83, 509 7782: 83, 510 7783: 83, 511 7784: 83, 512 7785: 83, 513 7835: 83, 514 84: 84, 515 116: 84, 516 354: 84, 517 355: 84, 518 356: 84, 519 357: 84, 520 538: 84, 521 539: 84, 522 7786: 84, 523 7787: 84, 524 7788: 84, 525 7789: 84, 526 7790: 84, 527 7791: 84, 528 7792: 84, 529 7793: 84, 530 7831: 84, 531 85: 85, 532 117: 85, 533 217: 85, 534 218: 85, 535 219: 85, 536 220: 85, 537 249: 85, 538 250: 85, 539 251: 85, 540 252: 85, 541 360: 85, 542 361: 85, 543 362: 85, 544 363: 85, 545 364: 85, 546 365: 85, 547 366: 85, 548 367: 85, 549 368: 85, 550 369: 85, 551 370: 85, 552 371: 85, 553 431: 85, 554 432: 85, 555 467: 85, 556 468: 85, 557 469: 85, 558 470: 85, 559 471: 85, 560 472: 85, 561 473: 85, 562 474: 85, 563 475: 85, 564 476: 85, 565 532: 85, 566 533: 85, 567 534: 85, 568 535: 85, 569 7794: 85, 570 7795: 85, 571 7796: 85, 572 7797: 85, 573 7798: 85, 574 7799: 85, 575 7800: 85, 576 7801: 85, 577 7802: 85, 578 7803: 85, 579 7908: 85, 580 7909: 85, 581 7910: 85, 582 7911: 85, 583 7912: 85, 584 7913: 85, 585 7914: 85, 586 7915: 85, 587 7916: 85, 588 7917: 85, 589 7918: 85, 590 7919: 85, 591 7920: 85, 592 7921: 85, 593 86: 86, 594 118: 86, 595 7804: 86, 596 7805: 86, 597 7806: 86, 598 7807: 86, 599 87: 87, 600 119: 87, 601 372: 87, 602 373: 87, 603 7808: 87, 604 7809: 87, 605 7810: 87, 606 7811: 87, 607 7812: 87, 608 7813: 87, 609 7814: 87, 610 7815: 87, 611 7816: 87, 612 7817: 87, 613 7832: 87, 614 88: 88, 615 120: 88, 616 7818: 88, 617 7819: 88, 618 7820: 88, 619 7821: 88, 620 89: 89, 621 121: 89, 622 221: 89, 623 253: 89, 624 255: 89, 625 374: 89, 626 375: 89, 627 376: 89, 628 562: 89, 629 563: 89, 630 7822: 89, 631 7823: 89, 632 7833: 89, 633 7922: 89, 634 7923: 89, 635 7924: 89, 636 7925: 89, 637 7926: 89, 638 7927: 89, 639 7928: 89, 640 7929: 89, 641 90: 90, 642 122: 90, 643 377: 90, 644 378: 90, 645 379: 90, 646 380: 90, 647 381: 90, 648 382: 90, 649 7824: 90, 650 7825: 90, 651 7826: 90, 652 7827: 90, 653 7828: 90, 654 7829: 90, 655 91: 91, 656 92: 92, 657 93: 93, 658 94: 94, 659 95: 95, 660 96: 96, 661 123: 97, 662 124: 98, 663 125: 99, 664 126: 100, 665 127: 101, 666 128: 102, 667 129: 103, 668 130: 104, 669 131: 105, 670 132: 106, 671 133: 107, 672 134: 108, 673 135: 109, 674 136: 110, 675 137: 111, 676 138: 112, 677 139: 113, 678 140: 114, 679 141: 115, 680 142: 116, 681 143: 117, 682 144: 118, 683 145: 119, 684 146: 120, 685 147: 121, 686 148: 122, 687 149: 123, 688 150: 124, 689 151: 125, 690 152: 126, 691 153: 127, 692 154: 128, 693 155: 129, 694 156: 130, 695 157: 131, 696 158: 132, 697 159: 133, 698 160: 134, 699 161: 135, 700 162: 136, 701 163: 137, 702 164: 138, 703 165: 139, 704 166: 140, 705 167: 141, 706 168: 142, 707 169: 143, 708 170: 144, 709 171: 145, 710 172: 146, 711 173: 147, 712 174: 148, 713 175: 149, 714 176: 150, 715 177: 151, 716 178: 152, 717 179: 153, 718 180: 154, 719 182: 155, 720 183: 156, 721 184: 157, 722 185: 158, 723 186: 159, 724 187: 160, 725 188: 161, 726 189: 162, 727 190: 163, 728 191: 164, 729 198: 165, 730 230: 165, 731 482: 165, 732 483: 165, 733 508: 165, 734 509: 165, 735 208: 166, 736 240: 166, 737 215: 167, 738 216: 168, 739 248: 168, 740 510: 168, 741 511: 168, 742 222: 169, 743 254: 169, 744 247: 170, 745 272: 171, 746 273: 171, 747 294: 172, 748 295: 172, 749 306: 173, 750 307: 173, 751 312: 174, 752 319: 175, 753 320: 175, 754 321: 176, 755 322: 176, 756 329: 177, 757 330: 178, 758 331: 178, 759 338: 179, 760 339: 179, 761 358: 180, 762 359: 180, 763 384: 181, 764 385: 182, 765 595: 182, 766 386: 183, 767 387: 183, 768 388: 184, 769 389: 184, 770 390: 185, 771 596: 185, 772 391: 186, 773 392: 186, 774 393: 187, 775 598: 187, 776 394: 188, 777 599: 188, 778 395: 189, 779 396: 189, 780 397: 190, 781 398: 191, 782 477: 191, 783 399: 192, 784 601: 192, 785 400: 193, 786 603: 193, 787 401: 194, 788 402: 194, 789 403: 195, 790 608: 195, 791 404: 196, 792 611: 196, 793 406: 197, 794 617: 197, 795 407: 198, 796 616: 198, 797 408: 199, 798 409: 199, 799 410: 200, 800 411: 201, 801 412: 202, 802 623: 202, 803 413: 203, 804 626: 203, 805 414: 204, 806 415: 205, 807 629: 205, 808 418: 206, 809 419: 206, 810 420: 207, 811 421: 207, 812 422: 208, 813 640: 208, 814 423: 209, 815 424: 209, 816 425: 210, 817 643: 210, 818 426: 211, 819 427: 212, 820 428: 213, 821 429: 213, 822 430: 214, 823 648: 214, 824 433: 215, 825 650: 215, 826 434: 216, 827 651: 216, 828 435: 217, 829 436: 217, 830 437: 218, 831 438: 218, 832 439: 219, 833 494: 219, 834 495: 219, 835 658: 219, 836 440: 220, 837 441: 220, 838 442: 221, 839 443: 222, 840 444: 223, 841 445: 223, 842 446: 224, 843 448: 225, 844 449: 226, 845 450: 227, 846 451: 228, 847 452: 229, 848 453: 229, 849 454: 229, 850 455: 230, 851 456: 230, 852 457: 230, 853 458: 231, 854 459: 231, 855 460: 231, 856 484: 232, 857 485: 232, 858 497: 233, 859 498: 233, 860 499: 233, 861 405: 234, 862 502: 234, 863 447: 235, 864 503: 235, 865 540: 236, 866 541: 236, 867 544: 237, 868 545: 238, 869 546: 239, 870 547: 239, 871 548: 240, 872 549: 240, 873 564: 241, 874 565: 242, 875 566: 243, 876 567: 244, 877 568: 245, 878 569: 246, 879 570: 247, 880 571: 248, 881 572: 249, 882 573: 250, 883 574: 251, 884 575: 252, 885 576: 253, 886 577: 254, 887 578: 255, 888 579: 256, 889 580: 257, 890 581: 258, 891 582: 259, 892 583: 260, 893 584: 261, 894 585: 262, 895 586: 263, 896 587: 264, 897 588: 265, 898 589: 266, 899 590: 267, 900 591: 268, 901 592: 269, 902 593: 270, 903 594: 271, 904 597: 272, 905 600: 273, 906 602: 274, 907 604: 275, 908 605: 276, 909 606: 277, 910 607: 278, 911 609: 279, 912 610: 280, 913 612: 281, 914 613: 282, 915 614: 283, 916 615: 284, 917 618: 285, 918 619: 286, 919 620: 287, 920 621: 288, 921 622: 289, 922 624: 290, 923 625: 291, 924 627: 292, 925 628: 293, 926 630: 294, 927 631: 295, 928 632: 296, 929 633: 297, 930 634: 298, 931 635: 299, 932 636: 300, 933 637: 301, 934 638: 302, 935 639: 303, 936 641: 304, 937 642: 305, 938 644: 306, 939 645: 307, 940 646: 308, 941 647: 309, 942 649: 310, 943 652: 311, 944 653: 312, 945 654: 313, 946 655: 314, 947 656: 315, 948 657: 316, 949 838: 495, 950 839: 496, 951 840: 497, 952 841: 498, 953 842: 499, 954 843: 500, 955 844: 501, 956 845: 502, 957 846: 503, 958 847: 504, 959 848: 505, 960 849: 506, 961 850: 507, 962 851: 508, 963 852: 509, 964 853: 510, 965 854: 511, 966 855: 512, 967 856: 513, 968 857: 514, 969 858: 515, 970 859: 516, 971 860: 517, 972 861: 518, 973 862: 519, 974 863: 520, 975 864: 521, 976 865: 522, 977 866: 523, 978 867: 524, 979 868: 525, 980 869: 526, 981 870: 527, 982 871: 528, 983 872: 529, 984 873: 530, 985 874: 531, 986 875: 532, 987 876: 533, 988 877: 534, 989 878: 535, 990 879: 536, 991 880: 537, 992 881: 538, 993 882: 539, 994 883: 540, 995 884: 541, 996 885: 542, 997 886: 543, 998 887: 544, 999 888: 545, 1000 889: 546, 1001 890: 547, 1002 891: 548, 1003 892: 549, 1004 893: 550, 1005 894: 551, 1006 895: 552, 1007 896: 553, 1008 897: 554, 1009 898: 555, 1010 899: 556, 1011 900: 557, 1012 901: 558, 1013 903: 559, 1014 907: 560, 1015 909: 561, 1016 902: 562, 1017 913: 562, 1018 940: 562, 1019 945: 562, 1020 7936: 562, 1021 7937: 562, 1022 7938: 562, 1023 7939: 562, 1024 7940: 562, 1025 7941: 562, 1026 7942: 562, 1027 7943: 562, 1028 7944: 562, 1029 7945: 562, 1030 7946: 562, 1031 7947: 562, 1032 7948: 562, 1033 7949: 562, 1034 7950: 562, 1035 7951: 562, 1036 8048: 562, 1037 8064: 562, 1038 8065: 562, 1039 8066: 562, 1040 8067: 562, 1041 8068: 562, 1042 8069: 562, 1043 8070: 562, 1044 8071: 562, 1045 8072: 562, 1046 8073: 562, 1047 8074: 562, 1048 8075: 562, 1049 8076: 562, 1050 8077: 562, 1051 8078: 562, 1052 8079: 562, 1053 8112: 562, 1054 8113: 562, 1055 8114: 562, 1056 8115: 562, 1057 8116: 562, 1058 8118: 562, 1059 8119: 562, 1060 8120: 562, 1061 8121: 562, 1062 8122: 562, 1063 8124: 562, 1064 914: 563, 1065 946: 563, 1066 976: 563, 1067 915: 564, 1068 947: 564, 1069 916: 565, 1070 948: 565, 1071 904: 566, 1072 917: 566, 1073 941: 566, 1074 949: 566, 1075 7952: 566, 1076 7953: 566, 1077 7954: 566, 1078 7955: 566, 1079 7956: 566, 1080 7957: 566, 1081 7960: 566, 1082 7961: 566, 1083 7962: 566, 1084 7963: 566, 1085 7964: 566, 1086 7965: 566, 1087 8050: 566, 1088 8136: 566, 1089 918: 567, 1090 950: 567, 1091 905: 568, 1092 919: 568, 1093 942: 568, 1094 951: 568, 1095 7968: 568, 1096 7969: 568, 1097 7970: 568, 1098 7971: 568, 1099 7972: 568, 1100 7973: 568, 1101 7974: 568, 1102 7975: 568, 1103 7976: 568, 1104 7977: 568, 1105 7978: 568, 1106 7979: 568, 1107 7980: 568, 1108 7981: 568, 1109 7982: 568, 1110 7983: 568, 1111 8052: 568, 1112 8080: 568, 1113 8081: 568, 1114 8082: 568, 1115 8083: 568, 1116 8084: 568, 1117 8085: 568, 1118 8086: 568, 1119 8087: 568, 1120 8088: 568, 1121 8089: 568, 1122 8090: 568, 1123 8091: 568, 1124 8092: 568, 1125 8093: 568, 1126 8094: 568, 1127 8095: 568, 1128 8130: 568, 1129 8131: 568, 1130 8132: 568, 1131 8134: 568, 1132 8135: 568, 1133 8138: 568, 1134 8140: 568, 1135 920: 569, 1136 952: 569, 1137 977: 569, 1138 837: 570, 1139 906: 570, 1140 912: 570, 1141 921: 570, 1142 938: 570, 1143 943: 570, 1144 953: 570, 1145 970: 570, 1146 7984: 570, 1147 7985: 570, 1148 7986: 570, 1149 7987: 570, 1150 7988: 570, 1151 7989: 570, 1152 7990: 570, 1153 7991: 570, 1154 7992: 570, 1155 7993: 570, 1156 7994: 570, 1157 7995: 570, 1158 7996: 570, 1159 7997: 570, 1160 7998: 570, 1161 7999: 570, 1162 8054: 570, 1163 8126: 570, 1164 8144: 570, 1165 8145: 570, 1166 8146: 570, 1167 8150: 570, 1168 8151: 570, 1169 8152: 570, 1170 8153: 570, 1171 8154: 570, 1172 922: 571, 1173 954: 571, 1174 1008: 571, 1175 923: 572, 1176 955: 572, 1177 181: 573, 1178 924: 573, 1179 956: 573, 1180 925: 574, 1181 957: 574, 1182 926: 575, 1183 958: 575, 1184 908: 576, 1185 927: 576, 1186 959: 576, 1187 972: 576, 1188 8000: 576, 1189 8001: 576, 1190 8002: 576, 1191 8003: 576, 1192 8004: 576, 1193 8005: 576, 1194 8008: 576, 1195 8009: 576, 1196 8010: 576, 1197 8011: 576, 1198 8012: 576, 1199 8013: 576, 1200 8056: 576, 1201 8184: 576, 1202 928: 577, 1203 960: 577, 1204 982: 577, 1205 929: 578, 1206 961: 578, 1207 1009: 578, 1208 8164: 578, 1209 8165: 578, 1210 8172: 578, 1211 930: 579, 1212 931: 580, 1213 962: 580, 1214 963: 580, 1215 1010: 580, 1216 932: 581, 1217 964: 581, 1218 910: 582, 1219 933: 582, 1220 939: 582, 1221 944: 582, 1222 965: 582, 1223 971: 582, 1224 973: 582, 1225 8016: 582, 1226 8017: 582, 1227 8018: 582, 1228 8019: 582, 1229 8020: 582, 1230 8021: 582, 1231 8022: 582, 1232 8023: 582, 1233 8025: 582, 1234 8027: 582, 1235 8029: 582, 1236 8031: 582, 1237 8058: 582, 1238 8160: 582, 1239 8161: 582, 1240 8162: 582, 1241 8166: 582, 1242 8167: 582, 1243 8168: 582, 1244 8169: 582, 1245 8170: 582, 1246 934: 583, 1247 966: 583, 1248 981: 583, 1249 935: 584, 1250 967: 584, 1251 936: 585, 1252 968: 585, 1253 911: 586, 1254 937: 586, 1255 969: 586, 1256 974: 586, 1257 8032: 586, 1258 8033: 586, 1259 8034: 586, 1260 8035: 586, 1261 8036: 586, 1262 8037: 586, 1263 8038: 586, 1264 8039: 586, 1265 8040: 586, 1266 8041: 586, 1267 8042: 586, 1268 8043: 586, 1269 8044: 586, 1270 8045: 586, 1271 8046: 586, 1272 8047: 586, 1273 8060: 586, 1274 8096: 586, 1275 8097: 586, 1276 8098: 586, 1277 8099: 586, 1278 8100: 586, 1279 8101: 586, 1280 8102: 586, 1281 8103: 586, 1282 8104: 586, 1283 8105: 586, 1284 8106: 586, 1285 8107: 586, 1286 8108: 586, 1287 8109: 586, 1288 8110: 586, 1289 8111: 586, 1290 8178: 586, 1291 8179: 586, 1292 8180: 586, 1293 8182: 586, 1294 8183: 586, 1295 8186: 586, 1296 8188: 586, 1297 975: 587, 1298 978: 588, 1299 979: 588, 1300 980: 588, 1301 983: 589, 1302 984: 590, 1303 985: 591, 1304 986: 592, 1305 987: 592, 1306 988: 593, 1307 989: 593, 1308 990: 594, 1309 991: 594, 1310 992: 595, 1311 993: 595, 1312 994: 596, 1313 995: 596, 1314 996: 597, 1315 997: 597, 1316 998: 598, 1317 999: 598, 1318 1000: 599, 1319 1001: 599, 1320 1002: 600, 1321 1003: 600, 1322 1004: 601, 1323 1005: 601, 1324 1006: 602, 1325 1007: 602, 1326 1011: 603, 1327 1012: 604, 1328 1013: 605, 1329 1014: 606, 1330 1015: 607, 1331 1016: 608, 1332 1017: 609, 1333 1018: 610, 1334 1019: 611, 1335 1020: 612, 1336 1021: 613, 1337 1022: 614, 1338 1023: 615, 1339 1026: 616, 1340 1106: 616, 1341 1028: 617, 1342 1108: 617, 1343 1029: 618, 1344 1109: 618, 1345 1030: 619, 1346 1031: 619, 1347 1110: 619, 1348 1111: 619, 1349 1032: 620, 1350 1112: 620, 1351 1033: 621, 1352 1113: 621, 1353 1034: 622, 1354 1114: 622, 1355 1035: 623, 1356 1115: 623, 1357 1039: 624, 1358 1119: 624, 1359 1040: 625, 1360 1072: 625, 1361 1232: 625, 1362 1233: 625, 1363 1234: 625, 1364 1235: 625, 1365 1041: 626, 1366 1073: 626, 1367 1042: 627, 1368 1074: 627, 1369 1027: 628, 1370 1043: 628, 1371 1075: 628, 1372 1107: 628, 1373 1044: 629, 1374 1076: 629, 1375 1024: 630, 1376 1025: 630, 1377 1045: 630, 1378 1077: 630, 1379 1104: 630, 1380 1105: 630, 1381 1238: 630, 1382 1239: 630, 1383 1046: 631, 1384 1078: 631, 1385 1217: 631, 1386 1218: 631, 1387 1244: 631, 1388 1245: 631, 1389 1047: 632, 1390 1079: 632, 1391 1246: 632, 1392 1247: 632, 1393 1037: 633, 1394 1048: 633, 1395 1080: 633, 1396 1117: 633, 1397 1250: 633, 1398 1251: 633, 1399 1252: 633, 1400 1253: 633, 1401 1049: 634, 1402 1081: 634, 1403 1036: 635, 1404 1050: 635, 1405 1082: 635, 1406 1116: 635, 1407 1051: 636, 1408 1083: 636, 1409 1052: 637, 1410 1084: 637, 1411 1053: 638, 1412 1085: 638, 1413 1054: 639, 1414 1086: 639, 1415 1254: 639, 1416 1255: 639, 1417 1055: 640, 1418 1087: 640, 1419 1056: 641, 1420 1088: 641, 1421 1057: 642, 1422 1089: 642, 1423 1058: 643, 1424 1090: 643, 1425 1038: 644, 1426 1059: 644, 1427 1091: 644, 1428 1118: 644, 1429 1262: 644, 1430 1263: 644, 1431 1264: 644, 1432 1265: 644, 1433 1266: 644, 1434 1267: 644, 1435 1060: 645, 1436 1092: 645, 1437 1061: 646, 1438 1093: 646, 1439 1062: 647, 1440 1094: 647, 1441 1063: 648, 1442 1095: 648, 1443 1268: 648, 1444 1269: 648, 1445 1064: 649, 1446 1096: 649, 1447 1065: 650, 1448 1097: 650, 1449 1066: 651, 1450 1098: 651, 1451 1067: 652, 1452 1099: 652, 1453 1272: 652, 1454 1273: 652, 1455 1068: 653, 1456 1100: 653, 1457 1069: 654, 1458 1101: 654, 1459 1260: 654, 1460 1261: 654, 1461 1070: 655, 1462 1102: 655, 1463 1071: 656, 1464 1103: 656, 1465 1120: 657, 1466 1121: 657, 1467 1122: 658, 1468 1123: 658, 1469 1124: 659, 1470 1125: 659, 1471 1126: 660, 1472 1127: 660, 1473 1128: 661, 1474 1129: 661, 1475 1130: 662, 1476 1131: 662, 1477 1132: 663, 1478 1133: 663, 1479 1134: 664, 1480 1135: 664, 1481 1136: 665, 1482 1137: 665, 1483 1138: 666, 1484 1139: 666, 1485 1140: 667, 1486 1141: 667, 1487 1142: 667, 1488 1143: 667, 1489 1144: 668, 1490 1145: 668, 1491 1146: 669, 1492 1147: 669, 1493 1148: 670, 1494 1149: 670, 1495 1150: 671, 1496 1151: 671, 1497 1152: 672, 1498 1153: 672, 1499 1154: 673, 1500 1155: 674, 1501 1156: 675, 1502 1157: 676, 1503 1158: 677, 1504 1159: 678, 1505 1160: 679, 1506 1161: 680, 1507 1162: 681, 1508 1163: 682, 1509 1164: 683, 1510 1165: 683, 1511 1166: 684, 1512 1167: 684, 1513 1168: 685, 1514 1169: 685, 1515 1170: 686, 1516 1171: 686, 1517 1172: 687, 1518 1173: 687, 1519 1174: 688, 1520 1175: 688, 1521 1176: 689, 1522 1177: 689, 1523 1178: 690, 1524 1179: 690, 1525 1180: 691, 1526 1181: 691, 1527 1182: 692, 1528 1183: 692, 1529 1184: 693, 1530 1185: 693, 1531 1186: 694, 1532 1187: 694, 1533 1188: 695, 1534 1189: 695, 1535 1190: 696, 1536 1191: 696, 1537 1192: 697, 1538 1193: 697, 1539 1194: 698, 1540 1195: 698, 1541 1196: 699, 1542 1197: 699, 1543 1198: 700, 1544 1199: 700, 1545 1200: 701, 1546 1201: 701, 1547 1202: 702, 1548 1203: 702, 1549 1204: 703, 1550 1205: 703, 1551 1206: 704, 1552 1207: 704, 1553 1208: 705, 1554 1209: 705, 1555 1210: 706, 1556 1211: 706, 1557 1212: 707, 1558 1213: 707, 1559 1214: 708, 1560 1215: 708, 1561 1216: 709, 1562 1219: 710, 1563 1220: 710, 1564 1221: 711, 1565 1222: 712, 1566 1223: 713, 1567 1224: 713, 1568 1225: 714, 1569 1226: 715, 1570 1227: 716, 1571 1228: 716, 1572 1229: 717, 1573 1230: 718, 1574 1231: 719, 1575 1236: 720, 1576 1237: 720, 1577 1240: 721, 1578 1241: 721, 1579 1242: 721, 1580 1243: 721, 1581 1248: 722, 1582 1249: 722, 1583 1256: 723, 1584 1257: 723, 1585 1258: 723, 1586 1259: 723, 1587 1270: 724, 1588 1271: 725, 1589 1274: 726, 1590 1275: 727, 1591 1276: 728, 1592 1277: 729, 1593 1278: 730, 1594 1279: 731, 1595 1280: 732, 1596 1281: 733, 1597 1282: 734, 1598 1283: 735, 1599 1284: 736, 1600 1285: 737, 1601 1286: 738, 1602 1287: 739, 1603 1288: 740, 1604 1289: 741, 1605 1290: 742, 1606 1291: 743, 1607 1292: 744, 1608 1293: 745, 1609 1294: 746, 1610 1295: 747, 1611 1296: 748, 1612 1297: 749, 1613 1298: 750, 1614 1299: 751, 1615 1300: 752, 1616 1301: 753, 1617 1302: 754, 1618 1303: 755, 1619 1304: 756, 1620 1305: 757, 1621 1306: 758, 1622 1307: 759, 1623 1308: 760, 1624 1309: 761, 1625 1310: 762, 1626 1311: 763, 1627 1312: 764, 1628 1313: 765, 1629 1314: 766, 1630 1315: 767, 1631 1316: 768, 1632 1317: 769, 1633 1318: 770, 1634 1319: 771, 1635 1320: 772, 1636 1321: 773, 1637 1322: 774, 1638 1323: 775, 1639 1324: 776, 1640 1325: 777, 1641 1326: 778, 1642 1327: 779, 1643 1328: 780, 1644 1329: 781, 1645 1377: 781, 1646 1330: 782, 1647 1378: 782, 1648 1331: 783, 1649 1379: 783, 1650 1332: 784, 1651 1380: 784, 1652 1333: 785, 1653 1381: 785, 1654 1334: 786, 1655 1382: 786, 1656 1335: 787, 1657 1383: 787, 1658 1336: 788, 1659 1384: 788, 1660 1337: 789, 1661 1385: 789, 1662 1338: 790, 1663 1386: 790, 1664 1339: 791, 1665 1387: 791, 1666 1340: 792, 1667 1388: 792, 1668 1341: 793, 1669 1389: 793, 1670 1342: 794, 1671 1390: 794, 1672 1343: 795, 1673 1391: 795, 1674 1344: 796, 1675 1392: 796, 1676 1345: 797, 1677 1393: 797, 1678 1346: 798, 1679 1394: 798, 1680 1347: 799, 1681 1395: 799, 1682 1348: 800, 1683 1396: 800, 1684 1349: 801, 1685 1397: 801, 1686 1350: 802, 1687 1398: 802, 1688 1351: 803, 1689 1399: 803, 1690 1352: 804, 1691 1400: 804, 1692 1353: 805, 1693 1401: 805, 1694 1354: 806, 1695 1402: 806, 1696 1355: 807, 1697 1403: 807, 1698 1356: 808, 1699 1404: 808, 1700 1357: 809, 1701 1405: 809, 1702 1358: 810, 1703 1406: 810, 1704 1359: 811, 1705 1407: 811, 1706 1360: 812, 1707 1408: 812, 1708 1361: 813, 1709 1409: 813, 1710 1362: 814, 1711 1410: 814, 1712 1363: 815, 1713 1411: 815, 1714 1364: 816, 1715 1412: 816, 1716 1365: 817, 1717 1413: 817, 1718 1366: 818, 1719 1414: 818, 1720 1367: 819, 1721 1368: 820, 1722 1369: 821, 1723 1370: 822, 1724 1371: 823, 1725 1372: 824, 1726 1373: 825, 1727 1374: 826, 1728 1375: 827, 1729 1376: 828, 1730 7834: 7094, 1731 7836: 7095, 1732 7837: 7096, 1733 7838: 7097, 1734 7839: 7098, 1735 7930: 7099, 1736 7931: 7100, 1737 7932: 7101, 1738 7933: 7102, 1739 7934: 7103, 1740 7935: 7104, 1741 7958: 7105, 1742 7959: 7106, 1743 7966: 7107, 1744 7967: 7108, 1745 8006: 7109, 1746 8007: 7110, 1747 8014: 7111, 1748 8015: 7112, 1749 8024: 7113, 1750 8026: 7114, 1751 8028: 7115, 1752 8030: 7116, 1753 8062: 7117, 1754 8063: 7118, 1755 8117: 7119, 1756 8049: 7120, 1757 8123: 7120, 1758 8125: 7121, 1759 8127: 7122, 1760 8128: 7123, 1761 8129: 7124, 1762 8133: 7125, 1763 8051: 7126, 1764 8137: 7126, 1765 8053: 7127, 1766 8139: 7127, 1767 8141: 7128, 1768 8142: 7129, 1769 8143: 7130, 1770 8147: 7131, 1771 8148: 7132, 1772 8149: 7133, 1773 8055: 7134, 1774 8155: 7134, 1775 8156: 7135, 1776 8157: 7136, 1777 8158: 7137, 1778 8159: 7138, 1779 8163: 7139, 1780 8059: 7140, 1781 8171: 7140, 1782 8173: 7141, 1783 8174: 7142, 1784 8175: 7143, 1785 8176: 7144, 1786 8177: 7145, 1787 8181: 7146, 1788 8057: 7147, 1789 8185: 7147, 1790 8061: 7148, 1791 8187: 7148, 1792 8560: 7504, 1793 8545: 7505, 1794 8561: 7505, 1795 8546: 7506, 1796 8562: 7506, 1797 8547: 7507, 1798 8563: 7507, 1799 8548: 7508, 1800 8564: 7508, 1801 8549: 7509, 1802 8565: 7509, 1803 8550: 7510, 1804 8566: 7510, 1805 8551: 7511, 1806 8567: 7511, 1807 8552: 7512, 1808 8568: 7512, 1809 8553: 7513, 1810 8569: 7513, 1811 8554: 7514, 1812 8570: 7514, 1813 8555: 7515, 1814 8571: 7515, 1815 8556: 7516, 1816 8572: 7516, 1817 8557: 7517, 1818 8573: 7517, 1819 8558: 7518, 1820 8574: 7518, 1821 8559: 7519, 1822 9424: 8342, 1823 9399: 8343, 1824 9425: 8343, 1825 9400: 8344, 1826 9426: 8344, 1827 9401: 8345, 1828 9427: 8345, 1829 9402: 8346, 1830 9428: 8346, 1831 9403: 8347, 1832 9429: 8347, 1833 9404: 8348, 1834 9430: 8348, 1835 9405: 8349, 1836 9431: 8349, 1837 9406: 8350, 1838 9432: 8350, 1839 9407: 8351, 1840 9433: 8351, 1841 9408: 8352, 1842 9434: 8352, 1843 9409: 8353, 1844 9435: 8353, 1845 9410: 8354, 1846 9436: 8354, 1847 9411: 8355, 1848 9437: 8355, 1849 9412: 8356, 1850 9438: 8356, 1851 9413: 8357, 1852 9439: 8357, 1853 9414: 8358, 1854 9440: 8358, 1855 9415: 8359, 1856 9441: 8359, 1857 9416: 8360, 1858 9442: 8360, 1859 9417: 8361, 1860 9443: 8361, 1861 9418: 8362, 1862 9444: 8362, 1863 9419: 8363, 1864 9445: 8363, 1865 9420: 8364, 1866 9446: 8364, 1867 9421: 8365, 1868 9447: 8365, 1869 9422: 8366, 1870 9448: 8366, 1871 9423: 8367, 1872 57344: 54214, 1873 65345: 62183, 1874 65314: 62184, 1875 65346: 62184, 1876 65315: 62185, 1877 65347: 62185, 1878 65316: 62186, 1879 65348: 62186, 1880 65317: 62187, 1881 65349: 62187, 1882 65318: 62188, 1883 65350: 62188, 1884 65319: 62189, 1885 65351: 62189, 1886 65320: 62190, 1887 65352: 62190, 1888 65321: 62191, 1889 65353: 62191, 1890 65322: 62192, 1891 65354: 62192, 1892 65323: 62193, 1893 65355: 62193, 1894 65324: 62194, 1895 65356: 62194, 1896 65325: 62195, 1897 65357: 62195, 1898 65326: 62196, 1899 65358: 62196, 1900 65327: 62197, 1901 65359: 62197, 1902 65328: 62198, 1903 65360: 62198, 1904 65329: 62199, 1905 65361: 62199, 1906 65330: 62200, 1907 65362: 62200, 1908 65331: 62201, 1909 65363: 62201, 1910 65332: 62202, 1911 65364: 62202, 1912 65333: 62203, 1913 65365: 62203, 1914 65334: 62204, 1915 65366: 62204, 1916 65335: 62205, 1917 65367: 62205, 1918 65336: 62206, 1919 65368: 62206, 1920 65337: 62207, 1921 65369: 62207, 1922 65338: 62208, 1923 65370: 62208, 1924 65339: 62209, 1925 65340: 62210, 1926 65341: 62211, 1927 65342: 62212, 1928 65343: 62213, 1929 65344: 62214, 1930 }