il2cpp-number-formatter.h 63.9 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917
#ifndef _MONO_METADATA_NUMBER_FORMATTER_H_
#define _MONO_METADATA_NUMBER_FORMATTER_H_ 1

#include <stdint.h>

static const uint64_t Formatter_MantissaBitsTable[] =
{
    4556951262222748432ULL, 9113902524445496865ULL, 1822780504889099373ULL,
    3645561009778198746ULL, 7291122019556397492ULL, 14582244039112794984ULL,
    2916448807822558996ULL, 5832897615645117993ULL, 11665795231290235987ULL,
    2333159046258047197ULL, 4666318092516094394ULL, 9332636185032188789ULL,
    1866527237006437757ULL, 3733054474012875515ULL, 7466108948025751031ULL,
    14932217896051502063ULL, 2986443579210300412ULL, 5972887158420600825ULL,
    11945774316841201651ULL, 2389154863368240330ULL, 4778309726736480660ULL,
    9556619453472961320ULL, 1911323890694592264ULL, 3822647781389184528ULL,
    7645295562778369056ULL, 15290591125556738113ULL, 3058118225111347622ULL,
    6116236450222695245ULL, 12232472900445390490ULL, 2446494580089078098ULL,
    4892989160178156196ULL, 9785978320356312392ULL, 1957195664071262478ULL,
    3914391328142524957ULL, 7828782656285049914ULL, 15657565312570099828ULL,
    3131513062514019965ULL, 6263026125028039931ULL, 12526052250056079862ULL,
    2505210450011215972ULL, 5010420900022431944ULL, 10020841800044863889ULL,
    2004168360008972777ULL, 4008336720017945555ULL, 8016673440035891111ULL,
    16033346880071782223ULL, 3206669376014356444ULL, 6413338752028712889ULL,
    12826677504057425779ULL, 2565335500811485155ULL, 5130671001622970311ULL,
    10261342003245940623ULL, 2052268400649188124ULL, 4104536801298376249ULL,
    8209073602596752498ULL, 16418147205193504997ULL, 3283629441038700999ULL,
    6567258882077401998ULL, 13134517764154803997ULL, 2626903552830960799ULL,
    5253807105661921599ULL, 10507614211323843198ULL, 2101522842264768639ULL,
    4203045684529537279ULL, 8406091369059074558ULL, 16812182738118149117ULL,
    3362436547623629823ULL, 6724873095247259646ULL, 13449746190494519293ULL,
    2689949238098903858ULL, 5379898476197807717ULL, 10759796952395615435ULL,
    2151959390479123087ULL, 4303918780958246174ULL, 8607837561916492348ULL,
    17215675123832984696ULL, 3443135024766596939ULL, 6886270049533193878ULL,
    13772540099066387756ULL, 2754508019813277551ULL, 5509016039626555102ULL,
    11018032079253110205ULL, 2203606415850622041ULL, 4407212831701244082ULL,
    8814425663402488164ULL, 17628851326804976328ULL, 3525770265360995265ULL,
    7051540530721990531ULL, 14103081061443981063ULL, 2820616212288796212ULL,
    5641232424577592425ULL, 11282464849155184850ULL, 2256492969831036970ULL,
    4512985939662073940ULL, 9025971879324147880ULL, 18051943758648295760ULL,
    3610388751729659152ULL, 7220777503459318304ULL, 14441555006918636608ULL,
    2888311001383727321ULL, 5776622002767454643ULL, 11553244005534909286ULL,
    2310648801106981857ULL, 4621297602213963714ULL, 9242595204427927429ULL,
    1848519040885585485ULL, 3697038081771170971ULL, 7394076163542341943ULL,
    14788152327084683887ULL, 2957630465416936777ULL, 5915260930833873554ULL,
    11830521861667747109ULL, 2366104372333549421ULL, 4732208744667098843ULL,
    9464417489334197687ULL, 1892883497866839537ULL, 3785766995733679075ULL,
    7571533991467358150ULL, 15143067982934716300ULL, 3028613596586943260ULL,
    6057227193173886520ULL, 12114454386347773040ULL, 2422890877269554608ULL,
    4845781754539109216ULL, 9691563509078218432ULL, 1938312701815643686ULL,
    3876625403631287372ULL, 7753250807262574745ULL, 15506501614525149491ULL,
    3101300322905029898ULL, 6202600645810059796ULL, 12405201291620119593ULL,
    2481040258324023918ULL, 4962080516648047837ULL, 9924161033296095674ULL,
    1984832206659219134ULL, 3969664413318438269ULL, 7939328826636876539ULL,
    15878657653273753079ULL, 3175731530654750615ULL, 6351463061309501231ULL,
    12702926122619002463ULL, 2540585224523800492ULL, 5081170449047600985ULL,
    10162340898095201970ULL, 2032468179619040394ULL, 4064936359238080788ULL,
    8129872718476161576ULL, 16259745436952323153ULL, 3251949087390464630ULL,
    6503898174780929261ULL, 13007796349561858522ULL, 2601559269912371704ULL,
    5203118539824743409ULL, 10406237079649486818ULL, 2081247415929897363ULL,
    4162494831859794727ULL, 8324989663719589454ULL, 16649979327439178909ULL,
    3329995865487835781ULL, 6659991730975671563ULL, 13319983461951343127ULL,
    2663996692390268625ULL, 5327993384780537250ULL, 10655986769561074501ULL,
    2131197353912214900ULL, 4262394707824429800ULL, 8524789415648859601ULL,
    17049578831297719202ULL, 3409915766259543840ULL, 6819831532519087681ULL,
    13639663065038175362ULL, 2727932613007635072ULL, 5455865226015270144ULL,
    10911730452030540289ULL, 2182346090406108057ULL, 4364692180812216115ULL,
    8729384361624432231ULL, 17458768723248864463ULL, 3491753744649772892ULL,
    6983507489299545785ULL, 13967014978599091570ULL, 2793402995719818314ULL,
    5586805991439636628ULL, 11173611982879273256ULL, 2234722396575854651ULL,
    4469444793151709302ULL, 8938889586303418605ULL, 17877779172606837210ULL,
    3575555834521367442ULL, 7151111669042734884ULL, 14302223338085469768ULL,
    2860444667617093953ULL, 5720889335234187907ULL, 11441778670468375814ULL,
    2288355734093675162ULL, 4576711468187350325ULL, 9153422936374700651ULL,
    1830684587274940130ULL, 3661369174549880260ULL, 7322738349099760521ULL,
    14645476698199521043ULL, 2929095339639904208ULL, 5858190679279808417ULL,
    11716381358559616834ULL, 2343276271711923366ULL, 4686552543423846733ULL,
    9373105086847693467ULL, 1874621017369538693ULL, 3749242034739077387ULL,
    7498484069478154774ULL, 14996968138956309548ULL, 2999393627791261909ULL,
    5998787255582523819ULL, 11997574511165047638ULL, 2399514902233009527ULL,
    4799029804466019055ULL, 9598059608932038110ULL, 1919611921786407622ULL,
    3839223843572815244ULL, 7678447687145630488ULL, 15356895374291260977ULL,
    3071379074858252195ULL, 6142758149716504390ULL, 12285516299433008781ULL,
    2457103259886601756ULL, 4914206519773203512ULL, 9828413039546407025ULL,
    1965682607909281405ULL, 3931365215818562810ULL, 7862730431637125620ULL,
    15725460863274251240ULL, 3145092172654850248ULL, 6290184345309700496ULL,
    12580368690619400992ULL, 2516073738123880198ULL, 5032147476247760397ULL,
    10064294952495520794ULL, 2012858990499104158ULL, 4025717980998208317ULL,
    8051435961996416635ULL, 16102871923992833270ULL, 3220574384798566654ULL,
    6441148769597133308ULL, 12882297539194266616ULL, 2576459507838853323ULL,
    5152919015677706646ULL, 10305838031355413293ULL, 2061167606271082658ULL,
    4122335212542165317ULL, 8244670425084330634ULL, 16489340850168661269ULL,
    3297868170033732253ULL, 6595736340067464507ULL, 13191472680134929015ULL,
    2638294536026985803ULL, 5276589072053971606ULL, 10553178144107943212ULL,
    2110635628821588642ULL, 4221271257643177284ULL, 8442542515286354569ULL,
    16885085030572709139ULL, 3377017006114541827ULL, 6754034012229083655ULL,
    13508068024458167311ULL, 2701613604891633462ULL, 5403227209783266924ULL,
    10806454419566533849ULL, 2161290883913306769ULL, 4322581767826613539ULL,
    8645163535653227079ULL, 17290327071306454158ULL, 3458065414261290831ULL,
    6916130828522581663ULL, 13832261657045163327ULL, 2766452331409032665ULL,
    5532904662818065330ULL, 11065809325636130661ULL, 2213161865127226132ULL,
    4426323730254452264ULL, 8852647460508904529ULL, 17705294921017809058ULL,
    3541058984203561811ULL, 7082117968407123623ULL, 14164235936814247246ULL,
    2832847187362849449ULL, 5665694374725698898ULL, 11331388749451397797ULL,
    2266277749890279559ULL, 4532555499780559119ULL, 9065110999561118238ULL,
    1813022199912223647ULL, 3626044399824447295ULL, 7252088799648894590ULL,
    14504177599297789180ULL, 2900835519859557836ULL, 5801671039719115672ULL,
    11603342079438231344ULL, 2320668415887646268ULL, 4641336831775292537ULL,
    9282673663550585075ULL, 1856534732710117015ULL, 3713069465420234030ULL,
    7426138930840468060ULL, 14852277861680936121ULL, 2970455572336187224ULL,
    5940911144672374448ULL, 11881822289344748896ULL, 2376364457868949779ULL,
    4752728915737899558ULL, 9505457831475799117ULL, 1901091566295159823ULL,
    3802183132590319647ULL, 7604366265180639294ULL, 15208732530361278588ULL,
    3041746506072255717ULL, 6083493012144511435ULL, 12166986024289022870ULL,
    2433397204857804574ULL, 4866794409715609148ULL, 9733588819431218296ULL,
    1946717763886243659ULL, 3893435527772487318ULL, 7786871055544974637ULL,
    15573742111089949274ULL, 3114748422217989854ULL, 6229496844435979709ULL,
    12458993688871959419ULL, 2491798737774391883ULL, 4983597475548783767ULL,
    9967194951097567535ULL, 1993438990219513507ULL, 3986877980439027014ULL,
    7973755960878054028ULL, 15947511921756108056ULL, 3189502384351221611ULL,
    6379004768702443222ULL, 12758009537404886445ULL, 2551601907480977289ULL,
    5103203814961954578ULL, 10206407629923909156ULL, 2041281525984781831ULL,
    4082563051969563662ULL, 8165126103939127325ULL, 16330252207878254650ULL,
    3266050441575650930ULL, 6532100883151301860ULL, 13064201766302603720ULL,
    2612840353260520744ULL, 5225680706521041488ULL, 10451361413042082976ULL,
    2090272282608416595ULL, 4180544565216833190ULL, 8361089130433666380ULL,
    16722178260867332761ULL, 3344435652173466552ULL, 6688871304346933104ULL,
    13377742608693866209ULL, 2675548521738773241ULL, 5351097043477546483ULL,
    10702194086955092967ULL, 2140438817391018593ULL, 4280877634782037187ULL,
    8561755269564074374ULL, 17123510539128148748ULL, 3424702107825629749ULL,
    6849404215651259499ULL, 13698808431302518998ULL, 2739761686260503799ULL,
    5479523372521007599ULL, 10959046745042015198ULL, 2191809349008403039ULL,
    4383618698016806079ULL, 8767237396033612159ULL, 17534474792067224318ULL,
    3506894958413444863ULL, 7013789916826889727ULL, 14027579833653779454ULL,
    2805515966730755890ULL, 5611031933461511781ULL, 11222063866923023563ULL,
    2244412773384604712ULL, 4488825546769209425ULL, 8977651093538418850ULL,
    17955302187076837701ULL, 3591060437415367540ULL, 7182120874830735080ULL,
    14364241749661470161ULL, 2872848349932294032ULL, 5745696699864588064ULL,
    11491393399729176129ULL, 2298278679945835225ULL, 4596557359891670451ULL,
    9193114719783340903ULL, 1838622943956668180ULL, 3677245887913336361ULL,
    7354491775826672722ULL, 14708983551653345445ULL, 2941796710330669089ULL,
    5883593420661338178ULL, 11767186841322676356ULL, 2353437368264535271ULL,
    4706874736529070542ULL, 9413749473058141084ULL, 1882749894611628216ULL,
    3765499789223256433ULL, 7530999578446512867ULL, 15061999156893025735ULL,
    3012399831378605147ULL, 6024799662757210294ULL, 12049599325514420588ULL,
    2409919865102884117ULL, 4819839730205768235ULL, 9639679460411536470ULL,
    1927935892082307294ULL, 3855871784164614588ULL, 7711743568329229176ULL,
    15423487136658458353ULL, 3084697427331691670ULL, 6169394854663383341ULL,
    12338789709326766682ULL, 2467757941865353336ULL, 4935515883730706673ULL,
    9871031767461413346ULL, 1974206353492282669ULL, 3948412706984565338ULL,
    7896825413969130677ULL, 15793650827938261354ULL, 3158730165587652270ULL,
    6317460331175304541ULL, 12634920662350609083ULL, 2526984132470121816ULL,
    5053968264940243633ULL, 10107936529880487266ULL, 2021587305976097453ULL,
    4043174611952194906ULL, 8086349223904389813ULL, 16172698447808779626ULL,
    3234539689561755925ULL, 6469079379123511850ULL, 12938158758247023701ULL,
    2587631751649404740ULL, 5175263503298809480ULL, 10350527006597618960ULL,
    2070105401319523792ULL, 4140210802639047584ULL, 8280421605278095168ULL,
    16560843210556190337ULL, 3312168642111238067ULL, 6624337284222476135ULL,
    13248674568444952270ULL, 2649734913688990454ULL, 5299469827377980908ULL,
    10598939654755961816ULL, 2119787930951192363ULL, 4239575861902384726ULL,
    8479151723804769452ULL, 16958303447609538905ULL, 3391660689521907781ULL,
    6783321379043815562ULL, 13566642758087631124ULL, 2713328551617526224ULL,
    5426657103235052449ULL, 10853314206470104899ULL, 2170662841294020979ULL,
    4341325682588041959ULL, 8682651365176083919ULL, 17365302730352167839ULL,
    3473060546070433567ULL, 6946121092140867135ULL, 13892242184281734271ULL,
    2778448436856346854ULL, 5556896873712693708ULL, 11113793747425387417ULL,
    2222758749485077483ULL, 4445517498970154966ULL, 8891034997940309933ULL,
    17782069995880619867ULL, 3556413999176123973ULL, 7112827998352247947ULL,
    14225655996704495894ULL, 2845131199340899178ULL, 5690262398681798357ULL,
    11380524797363596715ULL, 2276104959472719343ULL, 4552209918945438686ULL,
    9104419837890877372ULL, 1820883967578175474ULL, 3641767935156350948ULL,
    7283535870312701897ULL, 14567071740625403795ULL, 2913414348125080759ULL,
    5826828696250161518ULL, 11653657392500323036ULL, 2330731478500064607ULL,
    4661462957000129214ULL, 9322925914000258429ULL, 1864585182800051685ULL,
    3729170365600103371ULL, 7458340731200206743ULL, 14916681462400413486ULL,
    2983336292480082697ULL, 5966672584960165394ULL, 11933345169920330789ULL,
    2386669033984066157ULL, 4773338067968132315ULL, 9546676135936264631ULL,
    1909335227187252926ULL, 3818670454374505852ULL, 7637340908749011705ULL,
    15274681817498023410ULL, 3054936363499604682ULL, 6109872726999209364ULL,
    12219745453998418728ULL, 2443949090799683745ULL, 4887898181599367491ULL,
    9775796363198734982ULL, 1955159272639746996ULL, 3910318545279493993ULL,
    7820637090558987986ULL, 15641274181117975972ULL, 3128254836223595194ULL,
    6256509672447190388ULL, 12513019344894380777ULL, 2502603868978876155ULL,
    5005207737957752311ULL, 10010415475915504622ULL, 2002083095183100924ULL,
    4004166190366201848ULL, 8008332380732403697ULL, 16016664761464807395ULL,
    3203332952292961479ULL, 6406665904585922958ULL, 12813331809171845916ULL,
    2562666361834369183ULL, 5125332723668738366ULL, 10250665447337476733ULL,
    2050133089467495346ULL, 4100266178934990693ULL, 8200532357869981386ULL,
    16401064715739962772ULL, 3280212943147992554ULL, 6560425886295985109ULL,
    13120851772591970218ULL, 2624170354518394043ULL, 5248340709036788087ULL,
    10496681418073576174ULL, 2099336283614715234ULL, 4198672567229430469ULL,
    8397345134458860939ULL, 16794690268917721879ULL, 3358938053783544375ULL,
    6717876107567088751ULL, 13435752215134177503ULL, 2687150443026835500ULL,
    5374300886053671001ULL, 10748601772107342002ULL, 2149720354421468400ULL,
    4299440708842936801ULL, 8598881417685873602ULL, 17197762835371747204ULL,
    3439552567074349440ULL, 6879105134148698881ULL, 13758210268297397763ULL,
    2751642053659479552ULL, 5503284107318959105ULL, 11006568214637918210ULL,
    2201313642927583642ULL, 4402627285855167284ULL, 8805254571710334568ULL,
    17610509143420669137ULL, 3522101828684133827ULL, 7044203657368267654ULL,
    14088407314736535309ULL, 2817681462947307061ULL, 5635362925894614123ULL,
    11270725851789228247ULL, 2254145170357845649ULL, 4508290340715691299ULL,
    9016580681431382598ULL, 18033161362862765196ULL, 3606632272572553039ULL,
    7213264545145106078ULL, 14426529090290212157ULL, 2885305818058042431ULL,
    5770611636116084862ULL, 11541223272232169725ULL, 2308244654446433945ULL,
    4616489308892867890ULL, 9232978617785735780ULL, 1846595723557147156ULL,
    3693191447114294312ULL, 7386382894228588624ULL, 14772765788457177249ULL,
    2954553157691435449ULL, 5909106315382870899ULL, 11818212630765741799ULL,
    2363642526153148359ULL, 4727285052306296719ULL, 9454570104612593439ULL,
    1890914020922518687ULL, 3781828041845037375ULL, 7563656083690074751ULL,
    15127312167380149503ULL, 3025462433476029900ULL, 6050924866952059801ULL,
    12101849733904119602ULL, 2420369946780823920ULL, 4840739893561647841ULL,
    9681479787123295682ULL, 1936295957424659136ULL, 3872591914849318272ULL,
    7745183829698636545ULL, 15490367659397273091ULL, 3098073531879454618ULL,
    6196147063758909236ULL, 12392294127517818473ULL, 2478458825503563694ULL,
    4956917651007127389ULL, 9913835302014254778ULL, 1982767060402850955ULL,
    3965534120805701911ULL, 7931068241611403822ULL, 15862136483222807645ULL,
    3172427296644561529ULL, 6344854593289123058ULL, 12689709186578246116ULL,
    2537941837315649223ULL, 5075883674631298446ULL, 10151767349262596893ULL,
    2030353469852519378ULL, 4060706939705038757ULL, 8121413879410077514ULL,
    16242827758820155028ULL, 3248565551764031005ULL, 6497131103528062011ULL,
    12994262207056124023ULL, 2598852441411224804ULL, 5197704882822449609ULL,
    10395409765644899218ULL, 2079081953128979843ULL, 4158163906257959687ULL,
    8316327812515919374ULL, 16632655625031838749ULL, 3326531125006367749ULL,
    6653062250012735499ULL, 13306124500025470999ULL, 2661224900005094199ULL,
    5322449800010188399ULL, 10644899600020376799ULL, 2128979920004075359ULL,
    4257959840008150719ULL, 8515919680016301439ULL, 17031839360032602879ULL,
    3406367872006520575ULL, 6812735744013041151ULL, 13625471488026082303ULL,
    2725094297605216460ULL, 5450188595210432921ULL, 10900377190420865842ULL,
    2180075438084173168ULL, 4360150876168346337ULL, 8720301752336692674ULL,
    17440603504673385348ULL, 3488120700934677069ULL, 6976241401869354139ULL,
    13952482803738708279ULL, 2790496560747741655ULL, 5580993121495483311ULL,
    11161986242990966623ULL, 2232397248598193324ULL, 4464794497196386649ULL,
    8929588994392773298ULL, 17859177988785546597ULL, 3571835597757109319ULL,
    7143671195514218638ULL, 14287342391028437277ULL, 2857468478205687455ULL,
    5714936956411374911ULL, 11429873912822749822ULL, 2285974782564549964ULL,
    4571949565129099928ULL, 9143899130258199857ULL, 1828779826051639971ULL,
    3657559652103279943ULL, 7315119304206559886ULL, 14630238608413119772ULL,
    2926047721682623954ULL, 5852095443365247908ULL, 11704190886730495817ULL,
    2340838177346099163ULL, 4681676354692198327ULL, 9363352709384396654ULL,
    1872670541876879330ULL, 3745341083753758661ULL, 7490682167507517323ULL,
    14981364335015034646ULL, 2996272867003006929ULL, 5992545734006013858ULL,
    11985091468012027717ULL, 2397018293602405543ULL, 4794036587204811087ULL,
    9588073174409622174ULL, 1917614634881924434ULL, 3835229269763848869ULL,
    7670458539527697739ULL, 15340917079055395478ULL, 3068183415811079095ULL,
    6136366831622158191ULL, 12272733663244316382ULL, 2454546732648863276ULL,
    4909093465297726553ULL, 9818186930595453106ULL, 1963637386119090621ULL,
    3927274772238181242ULL, 7854549544476362484ULL, 15709099088952724969ULL,
    3141819817790544993ULL, 6283639635581089987ULL, 12567279271162179975ULL,
    2513455854232435995ULL, 5026911708464871990ULL, 10053823416929743980ULL,
    2010764683385948796ULL, 4021529366771897592ULL, 8043058733543795184ULL,
    16086117467087590369ULL, 3217223493417518073ULL, 6434446986835036147ULL,
    12868893973670072295ULL, 2573778794734014459ULL, 5147557589468028918ULL,
    10295115178936057836ULL, 2059023035787211567ULL, 4118046071574423134ULL,
    8236092143148846269ULL, 16472184286297692538ULL, 3294436857259538507ULL,
    6588873714519077015ULL, 13177747429038154030ULL, 2635549485807630806ULL,
    5271098971615261612ULL, 10542197943230523224ULL, 2108439588646104644ULL,
    4216879177292209289ULL, 8433758354584418579ULL, 16867516709168837158ULL,
    3373503341833767431ULL, 6747006683667534863ULL, 13494013367335069727ULL,
    2698802673467013945ULL, 5397605346934027890ULL, 10795210693868055781ULL,
    2159042138773611156ULL, 4318084277547222312ULL, 8636168555094444625ULL,
    17272337110188889250ULL, 3454467422037777850ULL, 6908934844075555700ULL,
    13817869688151111400ULL, 2763573937630222280ULL, 5527147875260444560ULL,
    11054295750520889120ULL, 2210859150104177824ULL, 4421718300208355648ULL,
    8843436600416711296ULL, 17686873200833422592ULL, 3537374640166684518ULL,
    7074749280333369037ULL, 14149498560666738074ULL, 2829899712133347614ULL,
    5659799424266695229ULL, 11319598848533390459ULL, 2263919769706678091ULL,
    4527839539413356183ULL, 9055679078826712367ULL, 1811135815765342473ULL,
    3622271631530684947ULL, 7244543263061369894ULL, 14489086526122739788ULL,
    2897817305224547957ULL, 5795634610449095915ULL, 11591269220898191830ULL,
    2318253844179638366ULL, 4636507688359276732ULL, 9273015376718553464ULL,
    1854603075343710692ULL, 3709206150687421385ULL, 7418412301374842771ULL,
    14836824602749685542ULL, 2967364920549937108ULL, 5934729841099874217ULL,
    11869459682199748434ULL, 2373891936439949686ULL, 4747783872879899373ULL,
    9495567745759798747ULL, 1899113549151959749ULL, 3798227098303919498ULL,
    7596454196607838997ULL, 15192908393215677995ULL, 3038581678643135599ULL,
    6077163357286271198ULL, 12154326714572542396ULL, 2430865342914508479ULL,
    4861730685829016958ULL, 9723461371658033917ULL, 1944692274331606783ULL,
    3889384548663213566ULL, 7778769097326427133ULL, 15557538194652854267ULL,
    3111507638930570853ULL, 6223015277861141707ULL, 12446030555722283414ULL,
    2489206111144456682ULL, 4978412222288913365ULL, 9956824444577826731ULL,
    1991364888915565346ULL, 3982729777831130692ULL, 7965459555662261385ULL,
    15930919111324522770ULL, 3186183822264904554ULL, 6372367644529809108ULL,
    12744735289059618216ULL, 2548947057811923643ULL, 5097894115623847286ULL,
    10195788231247694572ULL, 2039157646249538914ULL, 4078315292499077829ULL,
    8156630584998155658ULL, 16313261169996311316ULL, 3262652233999262263ULL,
    6525304467998524526ULL, 13050608935997049053ULL, 2610121787199409810ULL,
    5220243574398819621ULL, 10440487148797639242ULL, 2088097429759527848ULL,
    4176194859519055697ULL, 8352389719038111394ULL, 16704779438076222788ULL,
    3340955887615244557ULL, 6681911775230489115ULL, 13363823550460978230ULL,
    2672764710092195646ULL, 5345529420184391292ULL, 10691058840368782584ULL,
    2138211768073756516ULL, 4276423536147513033ULL, 8552847072295026067ULL,
    17105694144590052135ULL, 3421138828918010427ULL, 6842277657836020854ULL,
    13684555315672041708ULL, 2736911063134408341ULL, 5473822126268816683ULL,
    10947644252537633366ULL, 2189528850507526673ULL, 4379057701015053346ULL,
    8758115402030106693ULL, 17516230804060213386ULL, 3503246160812042677ULL,
    7006492321624085354ULL, 14012984643248170709ULL, 2802596928649634141ULL,
    5605193857299268283ULL, 11210387714598536567ULL, 2242077542919707313ULL,
    4484155085839414626ULL, 8968310171678829253ULL, 17936620343357658507ULL,
    3587324068671531701ULL, 7174648137343063403ULL, 14349296274686126806ULL,
    2869859254937225361ULL, 5739718509874450722ULL, 11479437019748901445ULL,
    2295887403949780289ULL, 4591774807899560578ULL, 9183549615799121156ULL,
    1836709923159824231ULL, 3673419846319648462ULL, 7346839692639296924ULL,
    14693679385278593849ULL, 2938735877055718769ULL, 5877471754111437539ULL,
    11754943508222875079ULL, 2350988701644575015ULL, 4701977403289150031ULL,
    9403954806578300063ULL, 1880790961315660012ULL, 3761581922631320025ULL,
    7523163845262640050ULL, 15046327690525280101ULL, 3009265538105056020ULL,
    6018531076210112040ULL, 12037062152420224081ULL, 2407412430484044816ULL,
    4814824860968089632ULL, 9629649721936179265ULL, 1925929944387235853ULL,
    3851859888774471706ULL, 7703719777548943412ULL, 15407439555097886824ULL,
    3081487911019577364ULL, 6162975822039154729ULL, 12325951644078309459ULL,
    2465190328815661891ULL, 4930380657631323783ULL, 9860761315262647567ULL,
    1972152263052529513ULL, 3944304526105059027ULL, 7888609052210118054ULL,
    15777218104420236108ULL, 3155443620884047221ULL, 6310887241768094443ULL,
    12621774483536188886ULL, 2524354896707237777ULL, 5048709793414475554ULL,
    10097419586828951109ULL, 2019483917365790221ULL, 4038967834731580443ULL,
    8077935669463160887ULL, 16155871338926321774ULL, 3231174267785264354ULL,
    6462348535570528709ULL, 12924697071141057419ULL, 2584939414228211483ULL,
    5169878828456422967ULL, 10339757656912845935ULL, 2067951531382569187ULL,
    4135903062765138374ULL, 8271806125530276748ULL, 16543612251060553497ULL,
    3308722450212110699ULL, 6617444900424221398ULL, 13234889800848442797ULL,
    2646977960169688559ULL, 5293955920339377119ULL, 10587911840678754238ULL,
    2117582368135750847ULL, 4235164736271501695ULL, 8470329472543003390ULL,
    16940658945086006781ULL, 3388131789017201356ULL, 6776263578034402712ULL,
    13552527156068805425ULL, 2710505431213761085ULL, 5421010862427522170ULL,
    10842021724855044340ULL, 2168404344971008868ULL, 4336808689942017736ULL,
    8673617379884035472ULL, 17347234759768070944ULL, 3469446951953614188ULL,
    6938893903907228377ULL, 13877787807814456755ULL, 2775557561562891351ULL,
    5551115123125782702ULL, 11102230246251565404ULL, 2220446049250313080ULL,
    4440892098500626161ULL, 8881784197001252323ULL, 17763568394002504646ULL,
    3552713678800500929ULL, 7105427357601001858ULL, 14210854715202003717ULL,
    2842170943040400743ULL, 5684341886080801486ULL, 11368683772161602973ULL,
    2273736754432320594ULL, 4547473508864641189ULL, 9094947017729282379ULL,
    1818989403545856475ULL, 3637978807091712951ULL, 7275957614183425903ULL,
    14551915228366851806ULL, 2910383045673370361ULL, 5820766091346740722ULL,
    11641532182693481445ULL, 2328306436538696289ULL, 4656612873077392578ULL,
    9313225746154785156ULL, 1862645149230957031ULL, 3725290298461914062ULL,
    7450580596923828125ULL, 14901161193847656250ULL, 2980232238769531250ULL,
    5960464477539062500ULL, 11920928955078125000ULL, 2384185791015625000ULL,
    4768371582031250000ULL, 9536743164062500000ULL, 1907348632812500000ULL,
    3814697265625000000ULL, 7629394531250000000ULL, 15258789062500000000ULL,
    3051757812500000000ULL, 6103515625000000000ULL, 12207031250000000000ULL,
    2441406250000000000ULL, 4882812500000000000ULL, 9765625000000000000ULL,
    1953125000000000000ULL, 3906250000000000000ULL, 7812500000000000000ULL,
    15625000000000000000ULL, 3125000000000000000ULL, 6250000000000000000ULL,
    12500000000000000000ULL, 2500000000000000000ULL, 5000000000000000000ULL,
    10000000000000000000ULL, 2000000000000000000ULL, 4000000000000000000ULL,
    8000000000000000000ULL, 16000000000000000000ULL, 3200000000000000000ULL,
    6400000000000000000ULL, 12800000000000000000ULL, 2560000000000000000ULL,
    5120000000000000000ULL, 10240000000000000000ULL, 2048000000000000000ULL,
    4096000000000000000ULL, 8192000000000000000ULL, 16384000000000000000ULL,
    3276800000000000000ULL, 6553600000000000000ULL, 13107200000000000000ULL,
    2621440000000000000ULL, 5242880000000000000ULL, 10485760000000000000ULL,
    2097152000000000000ULL, 4194304000000000000ULL, 8388608000000000000ULL,
    16777216000000000000ULL, 3355443200000000000ULL, 6710886400000000000ULL,
    13421772800000000000ULL, 2684354560000000000ULL, 5368709120000000000ULL,
    10737418240000000000ULL, 2147483648000000000ULL, 4294967296000000000ULL,
    8589934592000000000ULL, 17179869184000000000ULL, 3435973836800000000ULL,
    6871947673600000000ULL, 13743895347200000000ULL, 2748779069440000000ULL,
    5497558138880000000ULL, 10995116277760000000ULL, 2199023255552000000ULL,
    4398046511104000000ULL, 8796093022208000000ULL, 17592186044416000000ULL,
    3518437208883200000ULL, 7036874417766400000ULL, 14073748835532800000ULL,
    2814749767106560000ULL, 5629499534213120000ULL, 11258999068426240000ULL,
    2251799813685248000ULL, 4503599627370496000ULL, 9007199254740992000ULL,
    18014398509481984000ULL, 3602879701896396800ULL, 7205759403792793600ULL,
    14411518807585587200ULL, 2882303761517117440ULL, 5764607523034234880ULL,
    11529215046068469760ULL, 2305843009213693952ULL, 4611686018427387904ULL,
    9223372036854775808ULL, 1844674407370955161ULL, 3689348814741910323ULL,
    7378697629483820646ULL, 14757395258967641292ULL, 2951479051793528258ULL,
    5902958103587056517ULL, 11805916207174113034ULL, 2361183241434822606ULL,
    4722366482869645213ULL, 9444732965739290427ULL, 1888946593147858085ULL,
    3777893186295716170ULL, 7555786372591432341ULL, 15111572745182864683ULL,
    3022314549036572936ULL, 6044629098073145873ULL, 12089258196146291747ULL,
    2417851639229258349ULL, 4835703278458516698ULL, 9671406556917033397ULL,
    1934281311383406679ULL, 3868562622766813359ULL, 7737125245533626718ULL,
    15474250491067253436ULL, 3094850098213450687ULL, 6189700196426901374ULL,
    12379400392853802748ULL, 2475880078570760549ULL, 4951760157141521099ULL,
    9903520314283042199ULL, 1980704062856608439ULL, 3961408125713216879ULL,
    7922816251426433759ULL, 15845632502852867518ULL, 3169126500570573503ULL,
    6338253001141147007ULL, 12676506002282294014ULL, 2535301200456458802ULL,
    5070602400912917605ULL, 10141204801825835211ULL, 2028240960365167042ULL,
    4056481920730334084ULL, 8112963841460668169ULL, 16225927682921336339ULL,
    3245185536584267267ULL, 6490371073168534535ULL, 12980742146337069071ULL,
    2596148429267413814ULL, 5192296858534827628ULL, 10384593717069655257ULL,
    2076918743413931051ULL, 4153837486827862102ULL, 8307674973655724205ULL,
    16615349947311448411ULL, 3323069989462289682ULL, 6646139978924579364ULL,
    13292279957849158729ULL, 2658455991569831745ULL, 5316911983139663491ULL,
    10633823966279326983ULL, 2126764793255865396ULL, 4253529586511730793ULL,
    8507059173023461586ULL, 17014118346046923173ULL, 3402823669209384634ULL,
    6805647338418769269ULL, 13611294676837538538ULL, 2722258935367507707ULL,
    5444517870735015415ULL, 10889035741470030830ULL, 2177807148294006166ULL,
    4355614296588012332ULL, 8711228593176024664ULL, 17422457186352049329ULL,
    3484491437270409865ULL, 6968982874540819731ULL, 13937965749081639463ULL,
    2787593149816327892ULL, 5575186299632655785ULL, 11150372599265311570ULL,
    2230074519853062314ULL, 4460149039706124628ULL, 8920298079412249256ULL,
    17840596158824498513ULL, 3568119231764899702ULL, 7136238463529799405ULL,
    14272476927059598810ULL, 2854495385411919762ULL, 5708990770823839524ULL,
    11417981541647679048ULL, 2283596308329535809ULL, 4567192616659071619ULL,
    9134385233318143238ULL, 1826877046663628647ULL, 3653754093327257295ULL,
    7307508186654514591ULL, 14615016373309029182ULL, 2923003274661805836ULL,
    5846006549323611672ULL, 11692013098647223345ULL, 2338402619729444669ULL,
    4676805239458889338ULL, 9353610478917778676ULL, 1870722095783555735ULL,
    3741444191567111470ULL, 7482888383134222941ULL, 14965776766268445882ULL,
    2993155353253689176ULL, 5986310706507378352ULL, 11972621413014756705ULL,
    2394524282602951341ULL, 4789048565205902682ULL, 9578097130411805364ULL,
    1915619426082361072ULL, 3831238852164722145ULL, 7662477704329444291ULL,
    15324955408658888583ULL, 3064991081731777716ULL, 6129982163463555433ULL,
    12259964326927110866ULL, 2451992865385422173ULL, 4903985730770844346ULL,
    9807971461541688693ULL, 1961594292308337738ULL, 3923188584616675477ULL,
    7846377169233350954ULL, 15692754338466701909ULL, 3138550867693340381ULL,
    6277101735386680763ULL, 12554203470773361527ULL, 2510840694154672305ULL,
    5021681388309344611ULL, 10043362776618689222ULL, 2008672555323737844ULL,
    4017345110647475688ULL, 8034690221294951377ULL, 16069380442589902755ULL,
    3213876088517980551ULL, 6427752177035961102ULL, 12855504354071922204ULL,
    2571100870814384440ULL, 5142201741628768881ULL, 10284403483257537763ULL,
    2056880696651507552ULL, 4113761393303015105ULL, 8227522786606030210ULL,
    16455045573212060421ULL, 3291009114642412084ULL, 6582018229284824168ULL,
    13164036458569648337ULL, 2632807291713929667ULL, 5265614583427859334ULL,
    10531229166855718669ULL, 2106245833371143733ULL, 4212491666742287467ULL,
    8424983333484574935ULL, 16849966666969149871ULL, 3369993333393829974ULL,
    6739986666787659948ULL, 13479973333575319897ULL, 2695994666715063979ULL,
    5391989333430127958ULL, 10783978666860255917ULL, 2156795733372051183ULL,
    4313591466744102367ULL, 8627182933488204734ULL, 17254365866976409468ULL,
    3450873173395281893ULL, 6901746346790563787ULL, 13803492693581127574ULL,
    2760698538716225514ULL, 5521397077432451029ULL, 11042794154864902059ULL,
    2208558830972980411ULL, 4417117661945960823ULL, 8834235323891921647ULL,
    17668470647783843295ULL, 3533694129556768659ULL, 7067388259113537318ULL,
    14134776518227074636ULL, 2826955303645414927ULL, 5653910607290829854ULL,
    11307821214581659709ULL, 2261564242916331941ULL, 4523128485832663883ULL,
    9046256971665327767ULL, 18092513943330655534ULL, 3618502788666131106ULL,
    7237005577332262213ULL, 14474011154664524427ULL, 2894802230932904885ULL,
    5789604461865809771ULL, 11579208923731619542ULL, 2315841784746323908ULL,
    4631683569492647816ULL, 9263367138985295633ULL, 1852673427797059126ULL,
    3705346855594118253ULL, 7410693711188236507ULL, 14821387422376473014ULL,
    2964277484475294602ULL, 5928554968950589205ULL, 11857109937901178411ULL,
    2371421987580235682ULL, 4742843975160471364ULL, 9485687950320942729ULL,
    1897137590064188545ULL, 3794275180128377091ULL, 7588550360256754183ULL,
    15177100720513508366ULL, 3035420144102701673ULL, 6070840288205403346ULL,
    12141680576410806693ULL, 2428336115282161338ULL, 4856672230564322677ULL,
    9713344461128645354ULL, 1942668892225729070ULL, 3885337784451458141ULL,
    7770675568902916283ULL, 15541351137805832567ULL, 3108270227561166513ULL,
    6216540455122333026ULL, 12433080910244666053ULL, 2486616182048933210ULL,
    4973232364097866421ULL, 9946464728195732843ULL, 1989292945639146568ULL,
    3978585891278293137ULL, 7957171782556586274ULL, 15914343565113172548ULL,
    3182868713022634509ULL, 6365737426045269019ULL, 12731474852090538039ULL,
    2546294970418107607ULL, 5092589940836215215ULL, 10185179881672430431ULL,
    2037035976334486086ULL, 4074071952668972172ULL, 8148143905337944345ULL,
    16296287810675888690ULL, 3259257562135177738ULL, 6518515124270355476ULL,
    13037030248540710952ULL, 2607406049708142190ULL, 5214812099416284380ULL,
    10429624198832568761ULL, 2085924839766513752ULL, 4171849679533027504ULL,
    8343699359066055009ULL, 16687398718132110018ULL, 3337479743626422003ULL,
    6674959487252844007ULL, 13349918974505688014ULL, 2669983794901137602ULL,
    5339967589802275205ULL, 10679935179604550411ULL, 2135987035920910082ULL,
    4271974071841820164ULL, 8543948143683640329ULL, 17087896287367280659ULL,
    3417579257473456131ULL, 6835158514946912263ULL, 13670317029893824527ULL,
    2734063405978764905ULL, 5468126811957529810ULL, 10936253623915059621ULL,
    2187250724783011924ULL, 4374501449566023848ULL, 8749002899132047697ULL,
    17498005798264095394ULL, 3499601159652819078ULL, 6999202319305638157ULL,
    13998404638611276315ULL, 2799680927722255263ULL, 5599361855444510526ULL,
    11198723710889021052ULL, 2239744742177804210ULL, 4479489484355608421ULL,
    8958978968711216842ULL, 17917957937422433684ULL, 3583591587484486736ULL,
    7167183174968973473ULL, 14334366349937946947ULL, 2866873269987589389ULL,
    5733746539975178779ULL, 11467493079950357558ULL, 2293498615990071511ULL,
    4586997231980143023ULL, 9173994463960286046ULL, 1834798892792057209ULL,
    3669597785584114418ULL, 7339195571168228837ULL, 14678391142336457674ULL,
    2935678228467291534ULL, 5871356456934583069ULL, 11742712913869166139ULL,
    2348542582773833227ULL, 4697085165547666455ULL, 9394170331095332911ULL,
    1878834066219066582ULL, 3757668132438133164ULL, 7515336264876266329ULL,
    15030672529752532658ULL, 3006134505950506531ULL, 6012269011901013063ULL,
    12024538023802026126ULL, 2404907604760405225ULL, 4809815209520810450ULL,
    9619630419041620901ULL, 1923926083808324180ULL, 3847852167616648360ULL,
    7695704335233296721ULL, 15391408670466593442ULL, 3078281734093318688ULL,
    6156563468186637376ULL, 12313126936373274753ULL, 2462625387274654950ULL,
    4925250774549309901ULL, 9850501549098619803ULL, 1970100309819723960ULL,
    3940200619639447921ULL, 7880401239278895842ULL, 15760802478557791684ULL,
    3152160495711558336ULL, 6304320991423116673ULL, 12608641982846233347ULL,
    2521728396569246669ULL, 5043456793138493339ULL, 10086913586276986678ULL,
    2017382717255397335ULL, 4034765434510794671ULL, 8069530869021589342ULL,
    16139061738043178685ULL, 3227812347608635737ULL, 6455624695217271474ULL,
    12911249390434542948ULL, 2582249878086908589ULL, 5164499756173817179ULL,
    10328999512347634358ULL, 2065799902469526871ULL, 4131599804939053743ULL,
    8263199609878107486ULL, 16526399219756214973ULL, 3305279843951242994ULL,
    6610559687902485989ULL, 13221119375804971979ULL, 2644223875160994395ULL,
    5288447750321988791ULL, 10576895500643977583ULL, 2115379100128795516ULL,
    4230758200257591033ULL, 8461516400515182066ULL, 16923032801030364133ULL,
    3384606560206072826ULL, 6769213120412145653ULL, 13538426240824291306ULL,
    2707685248164858261ULL, 5415370496329716522ULL, 10830740992659433045ULL,
    2166148198531886609ULL, 4332296397063773218ULL, 8664592794127546436ULL,
    17329185588255092872ULL, 3465837117651018574ULL, 6931674235302037148ULL,
    13863348470604074297ULL, 2772669694120814859ULL, 5545339388241629719ULL,
    11090678776483259438ULL, 2218135755296651887ULL, 4436271510593303775ULL,
    8872543021186607550ULL, 17745086042373215101ULL, 3549017208474643020ULL,
    7098034416949286040ULL, 14196068833898572081ULL, 2839213766779714416ULL,
    5678427533559428832ULL, 11356855067118857664ULL, 2271371013423771532ULL,
    4542742026847543065ULL, 9085484053695086131ULL, 1817096810739017226ULL,
    3634193621478034452ULL, 7268387242956068905ULL, 14536774485912137810ULL,
    2907354897182427562ULL, 5814709794364855124ULL, 11629419588729710248ULL,
    2325883917745942049ULL, 4651767835491884099ULL, 9303535670983768199ULL,
    1860707134196753639ULL, 3721414268393507279ULL, 7442828536787014559ULL,
    14885657073574029118ULL, 2977131414714805823ULL, 5954262829429611647ULL,
    11908525658859223294ULL, 2381705131771844658ULL, 4763410263543689317ULL,
    9526820527087378635ULL, 1905364105417475727ULL, 3810728210834951454ULL,
    7621456421669902908ULL, 15242912843339805817ULL, 3048582568667961163ULL,
    6097165137335922326ULL, 12194330274671844653ULL, 2438866054934368930ULL,
    4877732109868737861ULL, 9755464219737475723ULL, 1951092843947495144ULL,
    3902185687894990289ULL, 7804371375789980578ULL, 15608742751579961156ULL,
    3121748550315992231ULL, 6243497100631984462ULL, 12486994201263968925ULL,
    2497398840252793785ULL, 4994797680505587570ULL, 9989595361011175140ULL,
    1997919072202235028ULL, 3995838144404470056ULL, 7991676288808940112ULL,
    15983352577617880224ULL, 3196670515523576044ULL, 6393341031047152089ULL,
    12786682062094304179ULL, 2557336412418860835ULL, 5114672824837721671ULL,
    10229345649675443343ULL, 2045869129935088668ULL, 4091738259870177337ULL,
    8183476519740354675ULL, 16366953039480709350ULL, 3273390607896141870ULL,
    6546781215792283740ULL, 13093562431584567480ULL, 2618712486316913496ULL,
    5237424972633826992ULL, 10474849945267653984ULL, 2094969989053530796ULL,
    4189939978107061593ULL, 8379879956214123187ULL, 16759759912428246374ULL,
    3351951982485649274ULL, 6703903964971298549ULL, 13407807929942597099ULL,
    2681561585988519419ULL, 5363123171977038839ULL, 10726246343954077679ULL,
    2145249268790815535ULL, 4290498537581631071ULL, 8580997075163262143ULL,
    17161994150326524287ULL, 3432398830065304857ULL, 6864797660130609714ULL,
    13729595320261219429ULL, 2745919064052243885ULL, 5491838128104487771ULL,
    10983676256208975543ULL, 2196735251241795108ULL, 4393470502483590217ULL,
    8786941004967180435ULL, 17573882009934360870ULL, 3514776401986872174ULL,
    7029552803973744348ULL, 14059105607947488696ULL, 2811821121589497739ULL,
    5623642243178995478ULL, 11247284486357990957ULL, 2249456897271598191ULL,
    4498913794543196382ULL, 8997827589086392765ULL, 17995655178172785531ULL,
    3599131035634557106ULL, 7198262071269114212ULL, 14396524142538228424ULL,
    2879304828507645684ULL, 5758609657015291369ULL, 11517219314030582739ULL,
    2303443862806116547ULL, 4606887725612233095ULL, 9213775451224466191ULL,
    1842755090244893238ULL, 3685510180489786476ULL, 7371020360979572953ULL,
    14742040721959145907ULL, 2948408144391829181ULL, 5896816288783658362ULL,
    11793632577567316725ULL, 2358726515513463345ULL, 4717453031026926690ULL,
    9434906062053853380ULL, 1886981212410770676ULL, 3773962424821541352ULL,
    7547924849643082704ULL, 15095849699286165408ULL, 3019169939857233081ULL,
    6038339879714466163ULL, 12076679759428932327ULL, 2415335951885786465ULL,
    4830671903771572930ULL, 9661343807543145861ULL, 1932268761508629172ULL,
    3864537523017258344ULL, 7729075046034516689ULL, 15458150092069033378ULL,
    3091630018413806675ULL, 6183260036827613351ULL, 12366520073655226703ULL,
    2473304014731045340ULL, 4946608029462090681ULL, 9893216058924181362ULL,
    1978643211784836272ULL, 3957286423569672544ULL, 7914572847139345089ULL,
    15829145694278690179ULL, 3165829138855738035ULL, 6331658277711476071ULL,
    12663316555422952143ULL, 2532663311084590428ULL, 5065326622169180857ULL,
    10130653244338361715ULL, 2026130648867672343ULL, 4052261297735344686ULL,
    8104522595470689372ULL, 16209045190941378744ULL, 3241809038188275748ULL,
    6483618076376551497ULL, 12967236152753102995ULL, 2593447230550620599ULL,
    5186894461101241198ULL, 10373788922202482396ULL, 2074757784440496479ULL,
    4149515568880992958ULL, 8299031137761985917ULL, 16598062275523971834ULL,
    3319612455104794366ULL, 6639224910209588733ULL, 13278449820419177467ULL,
    2655689964083835493ULL, 5311379928167670986ULL, 10622759856335341973ULL,
    2124551971267068394ULL, 4249103942534136789ULL, 8498207885068273579ULL,
    16996415770136547158ULL, 3399283154027309431ULL, 6798566308054618863ULL,
    13597132616109237726ULL, 2719426523221847545ULL, 5438853046443695090ULL,
    10877706092887390181ULL, 2175541218577478036ULL, 4351082437154956072ULL,
    8702164874309912144ULL, 17404329748619824289ULL, 3480865949723964857ULL,
    6961731899447929715ULL, 13923463798895859431ULL, 2784692759779171886ULL,
    5569385519558343772ULL, 11138771039116687545ULL, 2227754207823337509ULL,
    4455508415646675018ULL, 8911016831293350036ULL, 17822033662586700072ULL,
    3564406732517340014ULL, 7128813465034680029ULL, 14257626930069360058ULL,
    2851525386013872011ULL, 5703050772027744023ULL, 11406101544055488046ULL,
    2281220308811097609ULL, 4562440617622195218ULL, 9124881235244390437ULL,
    1824976247048878087ULL, 3649952494097756174ULL, 7299904988195512349ULL,
    14599809976391024699ULL, 2919961995278204939ULL, 5839923990556409879ULL,
    11679847981112819759ULL, 2335969596222563951ULL, 4671939192445127903ULL,
    9343878384890255807ULL, 1868775676978051161ULL, 3737551353956102323ULL,
    7475102707912204646ULL, 14950205415824409292ULL, 2990041083164881858ULL,
    5980082166329763716ULL, 11960164332659527433ULL, 2392032866531905486ULL,
    4784065733063810973ULL, 9568131466127621947ULL, 1913626293225524389ULL,
    3827252586451048778ULL, 7654505172902097557ULL, 15309010345804195115ULL,
    3061802069160839023ULL, 6123604138321678046ULL, 12247208276643356092ULL,
    2449441655328671218ULL, 4898883310657342436ULL, 9797766621314684873ULL,
    1959553324262936974ULL, 3919106648525873949ULL, 7838213297051747899ULL,
    15676426594103495798ULL, 3135285318820699159ULL, 6270570637641398319ULL,
    12541141275282796638ULL, 2508228255056559327ULL, 5016456510113118655ULL,
    10032913020226237310ULL, 2006582604045247462ULL, 4013165208090494924ULL,
    8026330416180989848ULL, 16052660832361979697ULL, 3210532166472395939ULL,
    6421064332944791878ULL, 12842128665889583757ULL, 2568425733177916751ULL,
    5136851466355833503ULL, 10273702932711667006ULL, 2054740586542333401ULL,
    4109481173084666802ULL, 8218962346169333605ULL, 16437924692338667210ULL,
    3287584938467733442ULL, 6575169876935466884ULL, 13150339753870933768ULL,
    2630067950774186753ULL, 5260135901548373507ULL, 10520271803096747014ULL,
    2104054360619349402ULL, 4208108721238698805ULL, 8416217442477397611ULL,
    16832434884954795223ULL, 3366486976990959044ULL, 6732973953981918089ULL,
    13465947907963836178ULL, 2693189581592767235ULL, 5386379163185534471ULL,
    10772758326371068942ULL, 2154551665274213788ULL, 4309103330548427577ULL,
    8618206661096855154ULL, 17236413322193710308ULL, 3447282664438742061ULL,
    6894565328877484123ULL, 13789130657754968246ULL, 2757826131550993649ULL,
    5515652263101987298ULL, 11031304526203974597ULL, 2206260905240794919ULL,
    4412521810481589838ULL, 8825043620963179677ULL, 17650087241926359355ULL,
    3530017448385271871ULL, 7060034896770543742ULL, 14120069793541087484ULL,
    2824013958708217496ULL, 5648027917416434993ULL, 11296055834832869987ULL,
    2259211166966573997ULL, 4518422333933147995ULL, 9036844667866295990ULL,
    18073689335732591980ULL, 3614737867146518396ULL, 7229475734293036792ULL,
    14458951468586073584ULL, 2891790293717214716ULL, 5783580587434429433ULL,
    11567161174868858867ULL, 2313432234973771773ULL, 4626864469947543547ULL,
    9253728939895087094ULL, 1850745787979017418ULL, 3701491575958034837ULL,
    7402983151916069675ULL, 14805966303832139350ULL, 2961193260766427870ULL,
    5922386521532855740ULL, 11844773043065711480ULL, 2368954608613142296ULL,
    4737909217226284592ULL, 9475818434452569184ULL, 1895163686890513836ULL,
    3790327373781027673ULL, 7580654747562055347ULL, 15161309495124110694ULL,
    3032261899024822138ULL, 6064523798049644277ULL, 12129047596099288555ULL,
    2425809519219857711ULL, 4851619038439715422ULL, 9703238076879430844ULL,
    1940647615375886168ULL, 3881295230751772337ULL, 7762590461503544675ULL,
    15525180923007089351ULL, 3105036184601417870ULL, 6210072369202835740ULL,
    12420144738405671481ULL, 2484028947681134296ULL, 4968057895362268592ULL,
    9936115790724537184ULL, 1987223158144907436ULL, 3974446316289814873ULL,
    7948892632579629747ULL, 15897785265159259495ULL, 3179557053031851899ULL,
    6359114106063703798ULL, 12718228212127407596ULL, 2543645642425481519ULL,
    5087291284850963038ULL, 10174582569701926077ULL, 2034916513940385215ULL,
    4069833027880770430ULL, 8139666055761540861ULL, 16279332111523081723ULL,
    3255866422304616344ULL, 6511732844609232689ULL, 13023465689218465379ULL,
    2604693137843693075ULL, 5209386275687386151ULL, 10418772551374772303ULL,
    2083754510274954460ULL, 4167509020549908921ULL, 8335018041099817842ULL,
    16670036082199635685ULL, 3334007216439927137ULL, 6668014432879854274ULL,
    13336028865759708548ULL, 2667205773151941709ULL, 5334411546303883419ULL,
    10668823092607766838ULL, 2133764618521553367ULL, 4267529237043106735ULL,
    8535058474086213470ULL, 17070116948172426941ULL, 3414023389634485388ULL,
    6828046779268970776ULL, 13656093558537941553ULL, 2731218711707588310ULL,
    5462437423415176621ULL, 10924874846830353242ULL, 2184974969366070648ULL,
    4369949938732141297ULL, 8739899877464282594ULL, 17479799754928565188ULL,
    3495959950985713037ULL, 6991919901971426075ULL, 13983839803942852150ULL,
    2796767960788570430ULL, 5593535921577140860ULL, 11187071843154281720ULL,
    2237414368630856344ULL, 4474828737261712688ULL, 8949657474523425376ULL,
    17899314949046850752ULL, 3579862989809370150ULL, 7159725979618740301ULL,
    14319451959237480602ULL, 2863890391847496120ULL, 5727780783694992240ULL,
    11455561567389984481ULL, 2291112313477996896ULL, 4582224626955993792ULL,
    9164449253911987585ULL, 1832889850782397517ULL, 3665779701564795034ULL,
    7331559403129590068ULL, 14663118806259180136ULL, 2932623761251836027ULL,
    5865247522503672054ULL, 11730495045007344109ULL, 2346099009001468821ULL,
    4692198018002937643ULL, 9384396036005875287ULL, 1876879207201175057ULL,
    3753758414402350114ULL, 7507516828804700229ULL, 15015033657609400459ULL,
    3003006731521880091ULL, 6006013463043760183ULL, 12012026926087520367ULL,
    2402405385217504073ULL, 4804810770435008147ULL, 9609621540870016294ULL,
    1921924308174003258ULL, 3843848616348006517ULL, 7687697232696013035ULL,
    15375394465392026070ULL, 3075078893078405214ULL, 6150157786156810428ULL,
    12300315572313620856ULL, 2460063114462724171ULL, 4920126228925448342ULL,
    9840252457850896685ULL, 1968050491570179337ULL, 3936100983140358674ULL,
    7872201966280717348ULL, 15744403932561434696ULL, 3148880786512286939ULL,
    6297761573024573878ULL, 12595523146049147757ULL, 2519104629209829551ULL,
    5038209258419659102ULL, 10076418516839318205ULL, 2015283703367863641ULL,
    4030567406735727282ULL, 8061134813471454564ULL, 16122269626942909129ULL,
    3224453925388581825ULL, 6448907850777163651ULL, 12897815701554327303ULL,
    2579563140310865460ULL, 5159126280621730921ULL, 10318252561243461842ULL,
    2063650512248692368ULL, 4127301024497384737ULL, 8254602048994769474ULL,
    16509204097989538948ULL, 3301840819597907789ULL, 6603681639195815579ULL,
    13207363278391631158ULL, 2641472655678326231ULL, 5282945311356652463ULL,
    10565890622713304927ULL, 2113178124542660985ULL, 4226356249085321970ULL,
    8452712498170643941ULL, 16905424996341287883ULL, 3381084999268257576ULL,
    6762169998536515153ULL, 13524339997073030306ULL, 2704867999414606061ULL,
    5409735998829212122ULL, 10819471997658424245ULL, 2163894399531684849ULL,
    4327788799063369698ULL, 8655577598126739396ULL, 17311155196253478792ULL,
    3462231039250695758ULL, 6924462078501391516ULL, 13848924157002783033ULL,
    2769784831400556606ULL, 5539569662801113213ULL, 11079139325602226427ULL,
    2215827865120445285ULL, 4431655730240890570ULL, 8863311460481781141ULL,
    17726622920963562283ULL, 3545324584192712456ULL, 7090649168385424913ULL,
    14181298336770849826ULL, 2836259667354169965ULL, 5672519334708339930ULL,
    11345038669416679861ULL, 2269007733883335972ULL, 4538015467766671944ULL,
    9076030935533343889ULL, 18152061871066687778ULL, 3630412374213337555ULL,
    7260824748426675111ULL, 14521649496853350222ULL, 2904329899370670044ULL,
    5808659798741340089ULL, 11617319597482680178ULL, 2323463919496536035ULL,
    4646927838993072071ULL, 9293855677986144142ULL, 1858771135597228828ULL,
    3717542271194457656ULL, 7435084542388915313ULL, 14870169084777830627ULL,
    2974033816955566125ULL, 5948067633911132251ULL, 11896135267822264502ULL,
    2379227053564452900ULL, 4758454107128905800ULL, 9516908214257811601ULL,
    1903381642851562320ULL, 3806763285703124640ULL, 7613526571406249281ULL,
    15227053142812498563ULL, 3045410628562499712ULL, 6090821257124999425ULL,
    12181642514249998850ULL, 2436328502849999770ULL, 4872657005699999540ULL,
    9745314011399999080ULL, 1949062802279999816ULL, 3898125604559999632ULL,
    7796251209119999264ULL, 15592502418239998528ULL, 3118500483647999705ULL,
    6237000967295999411ULL, 12474001934591998822ULL, 2494800386918399764ULL,
    4989600773836799529ULL, 9979201547673599058ULL, 1995840309534719811ULL,
    3991680619069439623ULL, 7983361238138879246ULL, 15966722476277758493ULL,
    3193344495255551698ULL, 6386688990511103397ULL, 12773377981022206794ULL,
    2554675596204441358ULL, 5109351192408882717ULL, 10218702384817765435ULL,
    2043740476963553087ULL, 4087480953927106174ULL, 8174961907854212348ULL,
    16349923815708424697ULL, 3269984763141684939ULL, 6539969526283369878ULL,
    13079939052566739757ULL, 2615987810513347951ULL, 5231975621026695903ULL,
    10463951242053391806ULL, 2092790248410678361ULL, 4185580496821356722ULL,
    8371160993642713444ULL, 16742321987285426889ULL, 3348464397457085377ULL,
    6696928794914170755ULL, 13393857589828341511ULL, 2678771517965668302ULL,
    5357543035931336604ULL, 10715086071862673209ULL, 2143017214372534641ULL,
    4286034428745069283ULL, 8572068857490138567ULL, 17144137714980277135ULL,
    3428827542996055427ULL, 6857655085992110854ULL, 13715310171984221708ULL,
    2743062034396844341ULL, 5486124068793688683ULL, 10972248137587377366ULL,
    2194449627517475473ULL, 4388899255034950946ULL, 8777798510069901893ULL,
    17555597020139803786ULL, 3511119404027960757ULL, 7022238808055921514ULL,
    14044477616111843029ULL, 2808895523222368605ULL, 5617791046444737211ULL,
    11235582092889474423ULL, 2247116418577894884ULL, 4494232837155789769ULL,
    8988465674311579538ULL, 17976931348623159077ULL, 3595386269724631815ULL,
    7190772539449263630ULL, 14381545078898527261ULL, 2876309015779705452ULL,
    5752618031559410904ULL, 11505236063118821809ULL, 2301047212623764361ULL,
    4602094425247528723ULL, 9204188850495057447ULL, 1840837770099011489ULL,
    3681675540198022979ULL, 7363351080396045958ULL,
};

static const int32_t Formatter_TensExponentTable[] =
{
    -323, -323, -322, -322, -322, -322, -321, -321, -321, -320, -320, -320,
    -319, -319, -319, -319, -318, -318, -318, -317, -317, -317, -316, -316,
    -316, -316, -315, -315, -315, -314, -314, -314, -313, -313, -313, -313,
    -312, -312, -312, -311, -311, -311, -310, -310, -310, -310, -309, -309,
    -309, -308, -308, -308, -307, -307, -307, -307, -306, -306, -306, -305,
    -305, -305, -304, -304, -304, -304, -303, -303, -303, -302, -302, -302,
    -301, -301, -301, -301, -300, -300, -300, -299, -299, -299, -298, -298,
    -298, -298, -297, -297, -297, -296, -296, -296, -295, -295, -295, -295,
    -294, -294, -294, -293, -293, -293, -292, -292, -292, -291, -291, -291,
    -291, -290, -290, -290, -289, -289, -289, -288, -288, -288, -288, -287,
    -287, -287, -286, -286, -286, -285, -285, -285, -285, -284, -284, -284,
    -283, -283, -283, -282, -282, -282, -282, -281, -281, -281, -280, -280,
    -280, -279, -279, -279, -279, -278, -278, -278, -277, -277, -277, -276,
    -276, -276, -276, -275, -275, -275, -274, -274, -274, -273, -273, -273,
    -273, -272, -272, -272, -271, -271, -271, -270, -270, -270, -270, -269,
    -269, -269, -268, -268, -268, -267, -267, -267, -267, -266, -266, -266,
    -265, -265, -265, -264, -264, -264, -263, -263, -263, -263, -262, -262,
    -262, -261, -261, -261, -260, -260, -260, -260, -259, -259, -259, -258,
    -258, -258, -257, -257, -257, -257, -256, -256, -256, -255, -255, -255,
    -254, -254, -254, -254, -253, -253, -253, -252, -252, -252, -251, -251,
    -251, -251, -250, -250, -250, -249, -249, -249, -248, -248, -248, -248,
    -247, -247, -247, -246, -246, -246, -245, -245, -245, -245, -244, -244,
    -244, -243, -243, -243, -242, -242, -242, -242, -241, -241, -241, -240,
    -240, -240, -239, -239, -239, -239, -238, -238, -238, -237, -237, -237,
    -236, -236, -236, -235, -235, -235, -235, -234, -234, -234, -233, -233,
    -233, -232, -232, -232, -232, -231, -231, -231, -230, -230, -230, -229,
    -229, -229, -229, -228, -228, -228, -227, -227, -227, -226, -226, -226,
    -226, -225, -225, -225, -224, -224, -224, -223, -223, -223, -223, -222,
    -222, -222, -221, -221, -221, -220, -220, -220, -220, -219, -219, -219,
    -218, -218, -218, -217, -217, -217, -217, -216, -216, -216, -215, -215,
    -215, -214, -214, -214, -214, -213, -213, -213, -212, -212, -212, -211,
    -211, -211, -211, -210, -210, -210, -209, -209, -209, -208, -208, -208,
    -208, -207, -207, -207, -206, -206, -206, -205, -205, -205, -204, -204,
    -204, -204, -203, -203, -203, -202, -202, -202, -201, -201, -201, -201,
    -200, -200, -200, -199, -199, -199, -198, -198, -198, -198, -197, -197,
    -197, -196, -196, -196, -195, -195, -195, -195, -194, -194, -194, -193,
    -193, -193, -192, -192, -192, -192, -191, -191, -191, -190, -190, -190,
    -189, -189, -189, -189, -188, -188, -188, -187, -187, -187, -186, -186,
    -186, -186, -185, -185, -185, -184, -184, -184, -183, -183, -183, -183,
    -182, -182, -182, -181, -181, -181, -180, -180, -180, -180, -179, -179,
    -179, -178, -178, -178, -177, -177, -177, -176, -176, -176, -176, -175,
    -175, -175, -174, -174, -174, -173, -173, -173, -173, -172, -172, -172,
    -171, -171, -171, -170, -170, -170, -170, -169, -169, -169, -168, -168,
    -168, -167, -167, -167, -167, -166, -166, -166, -165, -165, -165, -164,
    -164, -164, -164, -163, -163, -163, -162, -162, -162, -161, -161, -161,
    -161, -160, -160, -160, -159, -159, -159, -158, -158, -158, -158, -157,
    -157, -157, -156, -156, -156, -155, -155, -155, -155, -154, -154, -154,
    -153, -153, -153, -152, -152, -152, -152, -151, -151, -151, -150, -150,
    -150, -149, -149, -149, -149, -148, -148, -148, -147, -147, -147, -146,
    -146, -146, -145, -145, -145, -145, -144, -144, -144, -143, -143, -143,
    -142, -142, -142, -142, -141, -141, -141, -140, -140, -140, -139, -139,
    -139, -139, -138, -138, -138, -137, -137, -137, -136, -136, -136, -136,
    -135, -135, -135, -134, -134, -134, -133, -133, -133, -133, -132, -132,
    -132, -131, -131, -131, -130, -130, -130, -130, -129, -129, -129, -128,
    -128, -128, -127, -127, -127, -127, -126, -126, -126, -125, -125, -125,
    -124, -124, -124, -124, -123, -123, -123, -122, -122, -122, -121, -121,
    -121, -121, -120, -120, -120, -119, -119, -119, -118, -118, -118, -117,
    -117, -117, -117, -116, -116, -116, -115, -115, -115, -114, -114, -114,
    -114, -113, -113, -113, -112, -112, -112, -111, -111, -111, -111, -110,
    -110, -110, -109, -109, -109, -108, -108, -108, -108, -107, -107, -107,
    -106, -106, -106, -105, -105, -105, -105, -104, -104, -104, -103, -103,
    -103, -102, -102, -102, -102, -101, -101, -101, -100, -100, -100, -99,
    -99, -99, -99, -98, -98, -98, -97, -97, -97, -96, -96, -96,
    -96, -95, -95, -95, -94, -94, -94, -93, -93, -93, -93, -92,
    -92, -92, -91, -91, -91, -90, -90, -90, -89, -89, -89, -89,
    -88, -88, -88, -87, -87, -87, -86, -86, -86, -86, -85, -85,
    -85, -84, -84, -84, -83, -83, -83, -83, -82, -82, -82, -81,
    -81, -81, -80, -80, -80, -80, -79, -79, -79, -78, -78, -78,
    -77, -77, -77, -77, -76, -76, -76, -75, -75, -75, -74, -74,
    -74, -74, -73, -73, -73, -72, -72, -72, -71, -71, -71, -71,
    -70, -70, -70, -69, -69, -69, -68, -68, -68, -68, -67, -67,
    -67, -66, -66, -66, -65, -65, -65, -65, -64, -64, -64, -63,
    -63, -63, -62, -62, -62, -62, -61, -61, -61, -60, -60, -60,
    -59, -59, -59, -58, -58, -58, -58, -57, -57, -57, -56, -56,
    -56, -55, -55, -55, -55, -54, -54, -54, -53, -53, -53, -52,
    -52, -52, -52, -51, -51, -51, -50, -50, -50, -49, -49, -49,
    -49, -48, -48, -48, -47, -47, -47, -46, -46, -46, -46, -45,
    -45, -45, -44, -44, -44, -43, -43, -43, -43, -42, -42, -42,
    -41, -41, -41, -40, -40, -40, -40, -39, -39, -39, -38, -38,
    -38, -37, -37, -37, -37, -36, -36, -36, -35, -35, -35, -34,
    -34, -34, -34, -33, -33, -33, -32, -32, -32, -31, -31, -31,
    -30, -30, -30, -30, -29, -29, -29, -28, -28, -28, -27, -27,
    -27, -27, -26, -26, -26, -25, -25, -25, -24, -24, -24, -24,
    -23, -23, -23, -22, -22, -22, -21, -21, -21, -21, -20, -20,
    -20, -19, -19, -19, -18, -18, -18, -18, -17, -17, -17, -16,
    -16, -16, -15, -15, -15, -15, -14, -14, -14, -13, -13, -13,
    -12, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9,
    -9, -9, -8, -8, -8, -7, -7, -7, -6, -6, -6, -6,
    -5, -5, -5, -4, -4, -4, -3, -3, -3, -3, -2, -2,
    -2, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 2,
    2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5,
    6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9,
    9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13,
    13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16,
    16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20,
    20, 20, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23,
    24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 27, 27,
    27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 31,
    31, 31, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34,
    35, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38,
    38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 41,
    42, 42, 42, 43, 43, 43, 44, 44, 44, 44, 45, 45,
    45, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 49,
    49, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52,
    53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56,
    56, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 60,
    60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63,
    63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 66, 67,
    67, 67, 68, 68, 68, 69, 69, 69, 69, 70, 70, 70,
    71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 74, 74,
    74, 75, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78,
    78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81,
    81, 82, 82, 82, 83, 83, 83, 84, 84, 84, 84, 85,
    85, 85, 86, 86, 86, 87, 87, 87, 88, 88, 88, 88,
    89, 89, 89, 90, 90, 90, 91, 91, 91, 91, 92, 92,
    92, 93, 93, 93, 94, 94, 94, 94, 95, 95, 95, 96,
    96, 96, 97, 97, 97, 97, 98, 98, 98, 99, 99, 99,
    100, 100, 100, 100, 101, 101, 101, 102, 102, 102, 103, 103,
    103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 106,
    107, 107, 107, 108, 108, 108, 109, 109, 109, 109, 110, 110,
    110, 111, 111, 111, 112, 112, 112, 112, 113, 113, 113, 114,
    114, 114, 115, 115, 115, 116, 116, 116, 116, 117, 117, 117,
    118, 118, 118, 119, 119, 119, 119, 120, 120, 120, 121, 121,
    121, 122, 122, 122, 122, 123, 123, 123, 124, 124, 124, 125,
    125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128,
    128, 129, 129, 129, 130, 130, 130, 131, 131, 131, 131, 132,
    132, 132, 133, 133, 133, 134, 134, 134, 134, 135, 135, 135,
    136, 136, 136, 137, 137, 137, 137, 138, 138, 138, 139, 139,
    139, 140, 140, 140, 140, 141, 141, 141, 142, 142, 142, 143,
    143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 146,
    147, 147, 147, 147, 148, 148, 148, 149, 149, 149, 150, 150,
    150, 150, 151, 151, 151, 152, 152, 152, 153, 153, 153, 153,
    154, 154, 154, 155, 155, 155, 156, 156, 156, 156, 157, 157,
    157, 158, 158, 158, 159, 159, 159, 159, 160, 160, 160, 161,
    161, 161, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164,
    165, 165, 165, 165, 166, 166, 166, 167, 167, 167, 168, 168,
    168, 168, 169, 169, 169, 170, 170, 170, 171, 171, 171, 171,
    172, 172, 172, 173, 173, 173, 174, 174, 174, 175, 175, 175,
    175, 176, 176, 176, 177, 177, 177, 178, 178, 178, 178, 179,
    179, 179, 180, 180, 180, 181, 181, 181, 181, 182, 182, 182,
    183, 183, 183, 184, 184, 184, 184, 185, 185, 185, 186, 186,
    186, 187, 187, 187, 187, 188, 188, 188, 189, 189, 189, 190,
    190, 190, 190, 191, 191, 191, 192, 192, 192, 193, 193, 193,
    193, 194, 194, 194, 195, 195, 195, 196, 196, 196, 196, 197,
    197, 197, 198, 198, 198, 199, 199, 199, 199, 200, 200, 200,
    201, 201, 201, 202, 202, 202, 202, 203, 203, 203, 204, 204,
    204, 205, 205, 205, 206, 206, 206, 206, 207, 207, 207, 208,
    208, 208, 209, 209, 209, 209, 210, 210, 210, 211, 211, 211,
    212, 212, 212, 212, 213, 213, 213, 214, 214, 214, 215, 215,
    215, 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, 218,
    219, 219, 219, 220, 220, 220, 221, 221, 221, 221, 222, 222,
    222, 223, 223, 223, 224, 224, 224, 224, 225, 225, 225, 226,
    226, 226, 227, 227, 227, 227, 228, 228, 228, 229, 229, 229,
    230, 230, 230, 230, 231, 231, 231, 232, 232, 232, 233, 233,
    233, 234, 234, 234, 234, 235, 235, 235, 236, 236, 236, 237,
    237, 237, 237, 238, 238, 238, 239, 239, 239, 240, 240, 240,
    240, 241, 241, 241, 242, 242, 242, 243, 243, 243, 243, 244,
    244, 244, 245, 245, 245, 246, 246, 246, 246, 247, 247, 247,
    248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 251, 251,
    251, 252, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255,
    255, 255, 255, 256, 256, 256, 257, 257, 257, 258, 258, 258,
    258, 259, 259, 259, 260, 260, 260, 261, 261, 261, 261, 262,
    262, 262, 263, 263, 263, 264, 264, 264, 265, 265, 265, 265,
    266, 266, 266, 267, 267, 267, 268, 268, 268, 268, 269, 269,
    269, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 273,
    273, 273, 274, 274, 274, 274, 275, 275, 275, 276, 276, 276,
    277, 277, 277, 277, 278, 278, 278, 279, 279, 279, 280, 280,
    280, 280, 281, 281, 281, 282, 282, 282, 283, 283, 283, 283,
    284, 284, 284, 285, 285, 285, 286, 286, 286, 286, 287, 287,
    287, 288, 288, 288, 289, 289, 289, 289, 290, 290, 290, 291,
    291, 291, 292, 292, 292, 293, 293, 293,
};

static const int16_t Formatter_DigitLowerTable[] =
{
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};

static const int16_t Formatter_DigitUpperTable[] =
{
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
};

static const int64_t Formatter_TenPowersList[] =
{
    1LL,
    10LL,
    100LL,
    1000LL,
    10000LL,
    100000LL,
    1000000LL,
    10000000LL,
    100000000LL,
    1000000000LL,
    10000000000LL,
    100000000000LL,
    1000000000000LL,
    10000000000000LL,
    100000000000000LL,
    1000000000000000LL,
    10000000000000000LL,
    100000000000000000LL,
    1000000000000000000LL,
};

// DecHexDigits s a translation table from a decimal number to its
// digits hexadecimal representation (e.g. DecHexDigits [34] = 0x34).
static const int32_t Formatter_DecHexDigits[] =
{
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29,
    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
};

#endif