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