1% see https://en.wikipedia.org/wiki/Base64 for a description of how base64 works
    2:- module(pbase64, [
    3    codes_base64/2,
    4    base64_codes/2
    5]).    6	
    7codes_base64([],[]).
    8codes_base64([C1],[O1,O2,'=','=']) :-
    9	code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ),
   10	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),
   11	code_b64( [B6, B7, 0,  0,  0,  0  ], O2 ).
   12	
   13codes_base64([C1,C2],[O1,O2,O3,'=']) :-
   14    code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ),
   15	code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ),
   16
   17	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),
   18	code_b64( [B6, B7, B8, B9, B10,B11], O2 ),
   19	code_b64( [B12,B13,B14,B15,0,  0  ], O3 ).
   20
   21codes_base64([C1,C2,C3|Ct],[O1,O2,O3,O4|Ot]) :-
   22	code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ),
   23	code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ),
   24	code_byte( C3, byte(B16,B17,B18,B19,B20,B21,B22,B23) ),
   25
   26	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),	
   27	code_b64( [B6, B7, B8, B9, B10,B11], O2 ),
   28	code_b64( [B12,B13,B14,B15,B16,B17], O3 ),	
   29	code_b64( [B18,B19,B20,B21,B22,B23], O4 ),
   30	
   31	codes_base64(Ct,Ot).
   32
   33base64_codes([],[]).
   34base64_codes([C1],[O1,O2,'=','=']) :-
   35	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),
   36	code_b64( [B6, B7, 0,  0,  0,  0  ], O2 ),
   37	code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ).
   38
   39base64_codes([C1,C2],[O1,O2,O3,'=']) :-
   40	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),
   41	code_b64( [B6, B7, B8, B9, B10,B11], O2 ),
   42	code_b64( [B12,B13,B14,B15,0,  0  ], O3 ),
   43
   44    code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ),
   45	code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ).
   46
   47base64_codes([C1,C2,C3|Ct],[O1,O2,O3,O4|Ot]) :-
   48	code_b64( [B0, B1, B2, B3, B4, B5 ], O1 ),	
   49	code_b64( [B6, B7, B8, B9, B10,B11], O2 ),
   50	code_b64( [B12,B13,B14,B15,B16,B17], O3 ),	
   51	code_b64( [B18,B19,B20,B21,B22,B23], O4 ),
   52	
   53	code_byte( C1, byte(B0, B1, B2, B3, B4, B5, B6, B7) ),
   54	code_byte( C2, byte(B8, B9, B10,B11,B12,B13,B14,B15) ),
   55	code_byte( C3, byte(B16,B17,B18,B19,B20,B21,B22,B23) ),
   56
   57	base64_codes(Ct,Ot).
   58
   59
   60code_byte( 0,   byte(0,0,0,0,0,0,0,0) ).
   61code_byte( 1,   byte(0,0,0,0,0,0,0,1) ).
   62code_byte( 2,   byte(0,0,0,0,0,0,1,0) ).
   63code_byte( 3,   byte(0,0,0,0,0,0,1,1) ).
   64code_byte( 4,   byte(0,0,0,0,0,1,0,0) ).
   65code_byte( 5,   byte(0,0,0,0,0,1,0,1) ).
   66code_byte( 6,   byte(0,0,0,0,0,1,1,0) ).
   67code_byte( 7,   byte(0,0,0,0,0,1,1,1) ).
   68code_byte( 8,   byte(0,0,0,0,1,0,0,0) ).
   69code_byte( 9,   byte(0,0,0,0,1,0,0,1) ).
   70code_byte( 10,  byte(0,0,0,0,1,0,1,0) ).
   71code_byte( 11,  byte(0,0,0,0,1,0,1,1) ).
   72code_byte( 12,  byte(0,0,0,0,1,1,0,0) ).
   73code_byte( 13,  byte(0,0,0,0,1,1,0,1) ).
   74code_byte( 14,  byte(0,0,0,0,1,1,1,0) ).
   75code_byte( 15,  byte(0,0,0,0,1,1,1,1) ).
   76code_byte( 16,  byte(0,0,0,1,0,0,0,0) ).
   77code_byte( 17,  byte(0,0,0,1,0,0,0,1) ).
   78code_byte( 18,  byte(0,0,0,1,0,0,1,0) ).
   79code_byte( 19,  byte(0,0,0,1,0,0,1,1) ).
   80code_byte( 20,  byte(0,0,0,1,0,1,0,0) ).
   81code_byte( 21,  byte(0,0,0,1,0,1,0,1) ).
   82code_byte( 22,  byte(0,0,0,1,0,1,1,0) ).
   83code_byte( 23,  byte(0,0,0,1,0,1,1,1) ).
   84code_byte( 24,  byte(0,0,0,1,1,0,0,0) ).
   85code_byte( 25,  byte(0,0,0,1,1,0,0,1) ).
   86code_byte( 26,  byte(0,0,0,1,1,0,1,0) ).
   87code_byte( 27,  byte(0,0,0,1,1,0,1,1) ).
   88code_byte( 28,  byte(0,0,0,1,1,1,0,0) ).
   89code_byte( 29,  byte(0,0,0,1,1,1,0,1) ).
   90code_byte( 30,  byte(0,0,0,1,1,1,1,0) ).
   91code_byte( 31,  byte(0,0,0,1,1,1,1,1) ).
   92code_byte( 32,  byte(0,0,1,0,0,0,0,0) ).
   93code_byte( 33,  byte(0,0,1,0,0,0,0,1) ).
   94code_byte( 34,  byte(0,0,1,0,0,0,1,0) ).
   95code_byte( 35,  byte(0,0,1,0,0,0,1,1) ).
   96code_byte( 36,  byte(0,0,1,0,0,1,0,0) ).
   97code_byte( 37,  byte(0,0,1,0,0,1,0,1) ).
   98code_byte( 38,  byte(0,0,1,0,0,1,1,0) ).
   99code_byte( 39,  byte(0,0,1,0,0,1,1,1) ).
  100code_byte( 40,  byte(0,0,1,0,1,0,0,0) ).
  101code_byte( 41,  byte(0,0,1,0,1,0,0,1) ).
  102code_byte( 42,  byte(0,0,1,0,1,0,1,0) ).
  103code_byte( 43,  byte(0,0,1,0,1,0,1,1) ).
  104code_byte( 44,  byte(0,0,1,0,1,1,0,0) ).
  105code_byte( 45,  byte(0,0,1,0,1,1,0,1) ).
  106code_byte( 46,  byte(0,0,1,0,1,1,1,0) ).
  107code_byte( 47,  byte(0,0,1,0,1,1,1,1) ).
  108code_byte( 48,  byte(0,0,1,1,0,0,0,0) ).
  109code_byte( 49,  byte(0,0,1,1,0,0,0,1) ).
  110code_byte( 50,  byte(0,0,1,1,0,0,1,0) ).
  111code_byte( 51,  byte(0,0,1,1,0,0,1,1) ).
  112code_byte( 52,  byte(0,0,1,1,0,1,0,0) ).
  113code_byte( 53,  byte(0,0,1,1,0,1,0,1) ).
  114code_byte( 54,  byte(0,0,1,1,0,1,1,0) ).
  115code_byte( 55,  byte(0,0,1,1,0,1,1,1) ).
  116code_byte( 56,  byte(0,0,1,1,1,0,0,0) ).
  117code_byte( 57,  byte(0,0,1,1,1,0,0,1) ).
  118code_byte( 58,  byte(0,0,1,1,1,0,1,0) ).
  119code_byte( 59,  byte(0,0,1,1,1,0,1,1) ).
  120code_byte( 60,  byte(0,0,1,1,1,1,0,0) ).
  121code_byte( 61,  byte(0,0,1,1,1,1,0,1) ).
  122code_byte( 62,  byte(0,0,1,1,1,1,1,0) ).
  123code_byte( 63,  byte(0,0,1,1,1,1,1,1) ).
  124code_byte( 64,  byte(0,1,0,0,0,0,0,0) ).
  125code_byte( 65,  byte(0,1,0,0,0,0,0,1) ).
  126code_byte( 66,  byte(0,1,0,0,0,0,1,0) ).
  127code_byte( 67,  byte(0,1,0,0,0,0,1,1) ).
  128code_byte( 68,  byte(0,1,0,0,0,1,0,0) ).
  129code_byte( 69,  byte(0,1,0,0,0,1,0,1) ).
  130code_byte( 70,  byte(0,1,0,0,0,1,1,0) ).
  131code_byte( 71,  byte(0,1,0,0,0,1,1,1) ).
  132code_byte( 72,  byte(0,1,0,0,1,0,0,0) ).
  133code_byte( 73,  byte(0,1,0,0,1,0,0,1) ).
  134code_byte( 74,  byte(0,1,0,0,1,0,1,0) ).
  135code_byte( 75,  byte(0,1,0,0,1,0,1,1) ).
  136code_byte( 76,  byte(0,1,0,0,1,1,0,0) ).
  137code_byte( 77,  byte(0,1,0,0,1,1,0,1) ).
  138code_byte( 78,  byte(0,1,0,0,1,1,1,0) ).
  139code_byte( 79,  byte(0,1,0,0,1,1,1,1) ).
  140code_byte( 80,  byte(0,1,0,1,0,0,0,0) ).
  141code_byte( 81,  byte(0,1,0,1,0,0,0,1) ).
  142code_byte( 82,  byte(0,1,0,1,0,0,1,0) ).
  143code_byte( 83,  byte(0,1,0,1,0,0,1,1) ).
  144code_byte( 84,  byte(0,1,0,1,0,1,0,0) ).
  145code_byte( 85,  byte(0,1,0,1,0,1,0,1) ).
  146code_byte( 86,  byte(0,1,0,1,0,1,1,0) ).
  147code_byte( 87,  byte(0,1,0,1,0,1,1,1) ).
  148code_byte( 88,  byte(0,1,0,1,1,0,0,0) ).
  149code_byte( 89,  byte(0,1,0,1,1,0,0,1) ).
  150code_byte( 90,  byte(0,1,0,1,1,0,1,0) ).
  151code_byte( 91,  byte(0,1,0,1,1,0,1,1) ).
  152code_byte( 92,  byte(0,1,0,1,1,1,0,0) ).
  153code_byte( 93,  byte(0,1,0,1,1,1,0,1) ).
  154code_byte( 94,  byte(0,1,0,1,1,1,1,0) ).
  155code_byte( 95,  byte(0,1,0,1,1,1,1,1) ).
  156code_byte( 96,  byte(0,1,1,0,0,0,0,0) ).
  157code_byte( 97,  byte(0,1,1,0,0,0,0,1) ).
  158code_byte( 98,  byte(0,1,1,0,0,0,1,0) ).
  159code_byte( 99,  byte(0,1,1,0,0,0,1,1) ).
  160code_byte( 100, byte(0,1,1,0,0,1,0,0) ).
  161code_byte( 101, byte(0,1,1,0,0,1,0,1) ).
  162code_byte( 102, byte(0,1,1,0,0,1,1,0) ).
  163code_byte( 103, byte(0,1,1,0,0,1,1,1) ).
  164code_byte( 104, byte(0,1,1,0,1,0,0,0) ).
  165code_byte( 105, byte(0,1,1,0,1,0,0,1) ).
  166code_byte( 106, byte(0,1,1,0,1,0,1,0) ).
  167code_byte( 107, byte(0,1,1,0,1,0,1,1) ).
  168code_byte( 108, byte(0,1,1,0,1,1,0,0) ).
  169code_byte( 109, byte(0,1,1,0,1,1,0,1) ).
  170code_byte( 110, byte(0,1,1,0,1,1,1,0) ).
  171code_byte( 111, byte(0,1,1,0,1,1,1,1) ).
  172code_byte( 112, byte(0,1,1,1,0,0,0,0) ).
  173code_byte( 113, byte(0,1,1,1,0,0,0,1) ).
  174code_byte( 114, byte(0,1,1,1,0,0,1,0) ).
  175code_byte( 115, byte(0,1,1,1,0,0,1,1) ).
  176code_byte( 116, byte(0,1,1,1,0,1,0,0) ).
  177code_byte( 117, byte(0,1,1,1,0,1,0,1) ).
  178code_byte( 118, byte(0,1,1,1,0,1,1,0) ).
  179code_byte( 119, byte(0,1,1,1,0,1,1,1) ).
  180code_byte( 120, byte(0,1,1,1,1,0,0,0) ).
  181code_byte( 121, byte(0,1,1,1,1,0,0,1) ).
  182code_byte( 122, byte(0,1,1,1,1,0,1,0) ).
  183code_byte( 123, byte(0,1,1,1,1,0,1,1) ).
  184code_byte( 124, byte(0,1,1,1,1,1,0,0) ).
  185code_byte( 125, byte(0,1,1,1,1,1,0,1) ).
  186code_byte( 126, byte(0,1,1,1,1,1,1,0) ).
  187code_byte( 127, byte(0,1,1,1,1,1,1,1) ).
  188code_byte( 128, byte(1,0,0,0,0,0,0,0) ).
  189code_byte( 129, byte(1,0,0,0,0,0,0,1) ).
  190code_byte( 130, byte(1,0,0,0,0,0,1,0) ).
  191code_byte( 131, byte(1,0,0,0,0,0,1,1) ).
  192code_byte( 132, byte(1,0,0,0,0,1,0,0) ).
  193code_byte( 133, byte(1,0,0,0,0,1,0,1) ).
  194code_byte( 134, byte(1,0,0,0,0,1,1,0) ).
  195code_byte( 135, byte(1,0,0,0,0,1,1,1) ).
  196code_byte( 136, byte(1,0,0,0,1,0,0,0) ).
  197code_byte( 137, byte(1,0,0,0,1,0,0,1) ).
  198code_byte( 138, byte(1,0,0,0,1,0,1,0) ).
  199code_byte( 139, byte(1,0,0,0,1,0,1,1) ).
  200code_byte( 140, byte(1,0,0,0,1,1,0,0) ).
  201code_byte( 141, byte(1,0,0,0,1,1,0,1) ).
  202code_byte( 142, byte(1,0,0,0,1,1,1,0) ).
  203code_byte( 143, byte(1,0,0,0,1,1,1,1) ).
  204code_byte( 144, byte(1,0,0,1,0,0,0,0) ).
  205code_byte( 145, byte(1,0,0,1,0,0,0,1) ).
  206code_byte( 146, byte(1,0,0,1,0,0,1,0) ).
  207code_byte( 147, byte(1,0,0,1,0,0,1,1) ).
  208code_byte( 148, byte(1,0,0,1,0,1,0,0) ).
  209code_byte( 149, byte(1,0,0,1,0,1,0,1) ).
  210code_byte( 150, byte(1,0,0,1,0,1,1,0) ).
  211code_byte( 151, byte(1,0,0,1,0,1,1,1) ).
  212code_byte( 152, byte(1,0,0,1,1,0,0,0) ).
  213code_byte( 153, byte(1,0,0,1,1,0,0,1) ).
  214code_byte( 154, byte(1,0,0,1,1,0,1,0) ).
  215code_byte( 155, byte(1,0,0,1,1,0,1,1) ).
  216code_byte( 156, byte(1,0,0,1,1,1,0,0) ).
  217code_byte( 157, byte(1,0,0,1,1,1,0,1) ).
  218code_byte( 158, byte(1,0,0,1,1,1,1,0) ).
  219code_byte( 159, byte(1,0,0,1,1,1,1,1) ).
  220code_byte( 160, byte(1,0,1,0,0,0,0,0) ).
  221code_byte( 161, byte(1,0,1,0,0,0,0,1) ).
  222code_byte( 162, byte(1,0,1,0,0,0,1,0) ).
  223code_byte( 163, byte(1,0,1,0,0,0,1,1) ).
  224code_byte( 164, byte(1,0,1,0,0,1,0,0) ).
  225code_byte( 165, byte(1,0,1,0,0,1,0,1) ).
  226code_byte( 166, byte(1,0,1,0,0,1,1,0) ).
  227code_byte( 167, byte(1,0,1,0,0,1,1,1) ).
  228code_byte( 168, byte(1,0,1,0,1,0,0,0) ).
  229code_byte( 169, byte(1,0,1,0,1,0,0,1) ).
  230code_byte( 170, byte(1,0,1,0,1,0,1,0) ).
  231code_byte( 171, byte(1,0,1,0,1,0,1,1) ).
  232code_byte( 172, byte(1,0,1,0,1,1,0,0) ).
  233code_byte( 173, byte(1,0,1,0,1,1,0,1) ).
  234code_byte( 174, byte(1,0,1,0,1,1,1,0) ).
  235code_byte( 175, byte(1,0,1,0,1,1,1,1) ).
  236code_byte( 176, byte(1,0,1,1,0,0,0,0) ).
  237code_byte( 177, byte(1,0,1,1,0,0,0,1) ).
  238code_byte( 178, byte(1,0,1,1,0,0,1,0) ).
  239code_byte( 179, byte(1,0,1,1,0,0,1,1) ).
  240code_byte( 180, byte(1,0,1,1,0,1,0,0) ).
  241code_byte( 181, byte(1,0,1,1,0,1,0,1) ).
  242code_byte( 182, byte(1,0,1,1,0,1,1,0) ).
  243code_byte( 183, byte(1,0,1,1,0,1,1,1) ).
  244code_byte( 184, byte(1,0,1,1,1,0,0,0) ).
  245code_byte( 185, byte(1,0,1,1,1,0,0,1) ).
  246code_byte( 186, byte(1,0,1,1,1,0,1,0) ).
  247code_byte( 187, byte(1,0,1,1,1,0,1,1) ).
  248code_byte( 188, byte(1,0,1,1,1,1,0,0) ).
  249code_byte( 189, byte(1,0,1,1,1,1,0,1) ).
  250code_byte( 190, byte(1,0,1,1,1,1,1,0) ).
  251code_byte( 191, byte(1,0,1,1,1,1,1,1) ).
  252code_byte( 192, byte(1,1,0,0,0,0,0,0) ).
  253code_byte( 193, byte(1,1,0,0,0,0,0,1) ).
  254code_byte( 194, byte(1,1,0,0,0,0,1,0) ).
  255code_byte( 195, byte(1,1,0,0,0,0,1,1) ).
  256code_byte( 196, byte(1,1,0,0,0,1,0,0) ).
  257code_byte( 197, byte(1,1,0,0,0,1,0,1) ).
  258code_byte( 198, byte(1,1,0,0,0,1,1,0) ).
  259code_byte( 199, byte(1,1,0,0,0,1,1,1) ).
  260code_byte( 200, byte(1,1,0,0,1,0,0,0) ).
  261code_byte( 201, byte(1,1,0,0,1,0,0,1) ).
  262code_byte( 202, byte(1,1,0,0,1,0,1,0) ).
  263code_byte( 203, byte(1,1,0,0,1,0,1,1) ).
  264code_byte( 204, byte(1,1,0,0,1,1,0,0) ).
  265code_byte( 205, byte(1,1,0,0,1,1,0,1) ).
  266code_byte( 206, byte(1,1,0,0,1,1,1,0) ).
  267code_byte( 207, byte(1,1,0,0,1,1,1,1) ).
  268code_byte( 208, byte(1,1,0,1,0,0,0,0) ).
  269code_byte( 209, byte(1,1,0,1,0,0,0,1) ).
  270code_byte( 210, byte(1,1,0,1,0,0,1,0) ).
  271code_byte( 211, byte(1,1,0,1,0,0,1,1) ).
  272code_byte( 212, byte(1,1,0,1,0,1,0,0) ).
  273code_byte( 213, byte(1,1,0,1,0,1,0,1) ).
  274code_byte( 214, byte(1,1,0,1,0,1,1,0) ).
  275code_byte( 215, byte(1,1,0,1,0,1,1,1) ).
  276code_byte( 216, byte(1,1,0,1,1,0,0,0) ).
  277code_byte( 217, byte(1,1,0,1,1,0,0,1) ).
  278code_byte( 218, byte(1,1,0,1,1,0,1,0) ).
  279code_byte( 219, byte(1,1,0,1,1,0,1,1) ).
  280code_byte( 220, byte(1,1,0,1,1,1,0,0) ).
  281code_byte( 221, byte(1,1,0,1,1,1,0,1) ).
  282code_byte( 222, byte(1,1,0,1,1,1,1,0) ).
  283code_byte( 223, byte(1,1,0,1,1,1,1,1) ).
  284code_byte( 224, byte(1,1,1,0,0,0,0,0) ).
  285code_byte( 225, byte(1,1,1,0,0,0,0,1) ).
  286code_byte( 226, byte(1,1,1,0,0,0,1,0) ).
  287code_byte( 227, byte(1,1,1,0,0,0,1,1) ).
  288code_byte( 228, byte(1,1,1,0,0,1,0,0) ).
  289code_byte( 229, byte(1,1,1,0,0,1,0,1) ).
  290code_byte( 230, byte(1,1,1,0,0,1,1,0) ).
  291code_byte( 231, byte(1,1,1,0,0,1,1,1) ).
  292code_byte( 232, byte(1,1,1,0,1,0,0,0) ).
  293code_byte( 233, byte(1,1,1,0,1,0,0,1) ).
  294code_byte( 234, byte(1,1,1,0,1,0,1,0) ).
  295code_byte( 235, byte(1,1,1,0,1,0,1,1) ).
  296code_byte( 236, byte(1,1,1,0,1,1,0,0) ).
  297code_byte( 237, byte(1,1,1,0,1,1,0,1) ).
  298code_byte( 238, byte(1,1,1,0,1,1,1,0) ).
  299code_byte( 239, byte(1,1,1,0,1,1,1,1) ).
  300code_byte( 240, byte(1,1,1,1,0,0,0,0) ).
  301code_byte( 241, byte(1,1,1,1,0,0,0,1) ).
  302code_byte( 242, byte(1,1,1,1,0,0,1,0) ).
  303code_byte( 243, byte(1,1,1,1,0,0,1,1) ).
  304code_byte( 244, byte(1,1,1,1,0,1,0,0) ).
  305code_byte( 245, byte(1,1,1,1,0,1,0,1) ).
  306code_byte( 246, byte(1,1,1,1,0,1,1,0) ).
  307code_byte( 247, byte(1,1,1,1,0,1,1,1) ).
  308code_byte( 248, byte(1,1,1,1,1,0,0,0) ).
  309code_byte( 249, byte(1,1,1,1,1,0,0,1) ).
  310code_byte( 250, byte(1,1,1,1,1,0,1,0) ).
  311code_byte( 251, byte(1,1,1,1,1,0,1,1) ).
  312code_byte( 252, byte(1,1,1,1,1,1,0,0) ).
  313code_byte( 253, byte(1,1,1,1,1,1,0,1) ).
  314code_byte( 254, byte(1,1,1,1,1,1,1,0) ).
  315code_byte( 255, byte(1,1,1,1,1,1,1,1) ).
  316
  317
  318
  319code_b64([0,0,0,0,0,0], 'A' ).
  320code_b64([0,0,0,0,0,1], 'B' ).
  321code_b64([0,0,0,0,1,0], 'C' ).
  322code_b64([0,0,0,0,1,1], 'D' ).
  323code_b64([0,0,0,1,0,0], 'E' ).
  324code_b64([0,0,0,1,0,1], 'F' ).
  325code_b64([0,0,0,1,1,0], 'G' ).
  326code_b64([0,0,0,1,1,1], 'H' ).
  327code_b64([0,0,1,0,0,0], 'I' ).
  328code_b64([0,0,1,0,0,1], 'J' ).
  329code_b64([0,0,1,0,1,0], 'K' ).
  330code_b64([0,0,1,0,1,1], 'L' ).
  331code_b64([0,0,1,1,0,0], 'M' ).
  332code_b64([0,0,1,1,0,1], 'N' ).
  333code_b64([0,0,1,1,1,0], 'O' ).
  334code_b64([0,0,1,1,1,1], 'P' ).
  335code_b64([0,1,0,0,0,0], 'Q' ).
  336code_b64([0,1,0,0,0,1], 'R' ).
  337code_b64([0,1,0,0,1,0], 'S' ).
  338code_b64([0,1,0,0,1,1], 'T' ).
  339code_b64([0,1,0,1,0,0], 'U' ).
  340code_b64([0,1,0,1,0,1], 'V' ).
  341code_b64([0,1,0,1,1,0], 'W' ).
  342code_b64([0,1,0,1,1,1], 'X' ).
  343code_b64([0,1,1,0,0,0], 'Y' ).
  344code_b64([0,1,1,0,0,1], 'Z' ).
  345code_b64([0,1,1,0,1,0], 'a' ).
  346code_b64([0,1,1,0,1,1], 'b' ).
  347code_b64([0,1,1,1,0,0], 'c' ).
  348code_b64([0,1,1,1,0,1], 'd' ).
  349code_b64([0,1,1,1,1,0], 'e' ).
  350code_b64([0,1,1,1,1,1], 'f' ).
  351code_b64([1,0,0,0,0,0], 'g' ).
  352code_b64([1,0,0,0,0,1], 'h' ).
  353code_b64([1,0,0,0,1,0], 'i' ).
  354code_b64([1,0,0,0,1,1], 'j' ).
  355code_b64([1,0,0,1,0,0], 'k' ).
  356code_b64([1,0,0,1,0,1], 'l' ).
  357code_b64([1,0,0,1,1,0], 'm' ).
  358code_b64([1,0,0,1,1,1], 'n' ).
  359code_b64([1,0,1,0,0,0], 'o' ).
  360code_b64([1,0,1,0,0,1], 'p' ).
  361code_b64([1,0,1,0,1,0], 'q' ).
  362code_b64([1,0,1,0,1,1], 'r' ).
  363code_b64([1,0,1,1,0,0], 's' ).
  364code_b64([1,0,1,1,0,1], 't' ).
  365code_b64([1,0,1,1,1,0], 'u' ).
  366code_b64([1,0,1,1,1,1], 'v' ).
  367code_b64([1,1,0,0,0,0], 'w' ).
  368code_b64([1,1,0,0,0,1], 'x' ).
  369code_b64([1,1,0,0,1,0], 'y' ).
  370code_b64([1,1,0,0,1,1], 'z' ).
  371code_b64([1,1,0,1,0,0], '0' ).
  372code_b64([1,1,0,1,0,1], '1' ).
  373code_b64([1,1,0,1,1,0], '2' ).
  374code_b64([1,1,0,1,1,1], '3' ).
  375code_b64([1,1,1,0,0,0], '4' ).
  376code_b64([1,1,1,0,0,1], '5' ).
  377code_b64([1,1,1,0,1,0], '6' ).
  378code_b64([1,1,1,0,1,1], '7' ).
  379code_b64([1,1,1,1,0,0], '8' ).
  380code_b64([1,1,1,1,0,1], '9' ).
  381code_b64([1,1,1,1,1,0], '+' ).
  382code_b64([1,1,1,1,1,1], '/' )