1implement dd; 2 3include "sys.m"; 4 sys: Sys; 5 stderr: ref Sys->FD; 6 7include "draw.m"; 8 9dd: module 10{ 11 init: fn(nil: ref Draw->Context, argv: list of string); 12}; 13 14BIG: con 2147483647; 15LCASE, 16UCASE, 17SWAB, 18NERR , 19SYNC : con (1<<iota); 20 21NULL, 22CNULL, 23EBCDIC, 24IBM, 25ASCII, 26BLOCK, 27UNBLOCK: con iota; 28 29cflag: int; 30ctype: int; 31 32fflag: int; 33arg: string; 34ifile: string; 35ofile: string; 36ibuf: array of byte; 37obuf: array of byte; 38op: int; 39skip: int; 40oseekn: int; 41iseekn: int; 42count: int; 43files:= 1; 44ibs:= 512; 45obs:= 512; 46bs: int; 47cbs: int; 48ibc: int; 49obc: int; 50cbc: int; 51nifr: int; 52nipr: int; 53nofr: int; 54nopr: int; 55ntrunc: int; 56ibf: ref Sys->FD; 57obf: ref Sys->FD; 58nspace: int; 59 60iskey(key:string, s: string): int 61{ 62 return key[0] == '-' && key[1:] == s; 63} 64 65exits(msg: string) 66{ 67 if(msg == nil) 68 exit; 69 70 raise "fail:"+msg; 71} 72 73perror(msg: string) 74{ 75 sys->fprint(stderr, "%s: %r\n", msg); 76} 77 78init(nil: ref Draw->Context, argv: list of string) 79{ 80 sys = load Sys Sys->PATH; 81 if(sys == nil) 82 return; 83 stderr = sys->fildes(2); 84 85 ctype = NULL; 86 argv = tl argv; 87 while(argv != nil) { 88 key := hd argv; 89 argv = tl argv; 90 if(argv == nil){ 91 sys->fprint(stderr, "dd: arg %s needs a value\n", key); 92 exits("arg"); 93 } 94 arg = hd argv; 95 argv = tl argv; 96 if(iskey(key, "ibs")) { 97 ibs = number(BIG); 98 continue; 99 } 100 if(iskey(key, "obs")) { 101 obs = number(BIG); 102 continue; 103 } 104 if(iskey(key, "cbs")) { 105 cbs = number(BIG); 106 continue; 107 } 108 if(iskey(key, "bs")) { 109 bs = number(BIG); 110 continue; 111 } 112 if(iskey(key, "if")) { 113 ifile = arg[0:]; 114 continue; 115 } 116 if(iskey(key, "of")) { 117 ofile = arg[0:]; 118 continue; 119 } 120 if(iskey(key, "skip")) { 121 skip = number(BIG); 122 continue; 123 } 124 if(iskey(key, "seek") || iskey(key, "oseek")) { 125 oseekn = number(BIG); 126 continue; 127 } 128 if(iskey(key, "iseek")) { 129 iseekn = number(BIG); 130 continue; 131 } 132 if(iskey(key, "count")) { 133 count = number(BIG); 134 continue; 135 } 136 if(iskey(key, "files")) { 137 files = number(BIG); 138 continue; 139 } 140 if(iskey(key, "conv")) { 141 do { 142 if(arg == nil) 143 break; 144 if(match(",")) 145 continue; 146 if(match("ebcdic")) { 147 ctype = EBCDIC; 148 continue; 149 } 150 if(match("ibm")) { 151 ctype = IBM; 152 continue; 153 } 154 if(match("ascii")) { 155 ctype = ASCII; 156 continue; 157 } 158 if(match("block")) { 159 ctype = BLOCK; 160 continue; 161 } 162 if(match("unblock")) { 163 ctype = UNBLOCK; 164 continue; 165 } 166 if(match("lcase")) { 167 cflag |= LCASE; 168 continue; 169 } 170 if(match("ucase")) { 171 cflag |= UCASE; 172 continue; 173 } 174 if(match("swab")) { 175 cflag |= SWAB; 176 continue; 177 } 178 if(match("noerror")) { 179 cflag |= NERR; 180 continue; 181 } 182 if(match("sync")) { 183 cflag |= SYNC; 184 continue; 185 } 186 } while(1); 187 continue; 188 } 189 sys->fprint(stderr, "dd: bad arg: %s\n", key); 190 exits("arg"); 191 } 192 if(ctype == NULL && cflag&(LCASE|UCASE)) 193 ctype = CNULL; 194 if(ifile != nil) 195 ibf = sys->open(ifile, Sys->OREAD); 196 else 197 ibf = sys->fildes(sys->dup(0, -1)); 198 199 if(ibf == nil) { 200 sys->fprint(stderr, "dd: open %s: %r\n", ifile); 201 exits("open"); 202 } 203 204 if(ofile != nil){ 205 obf = sys->create(ofile, Sys->OWRITE, 8r664); 206 if(obf == nil) { 207 sys->fprint(stderr, "dd: create %s: %r\n", ofile); 208 exits("create"); 209 } 210 }else{ 211 obf = sys->fildes(sys->dup(1, -1)); 212 if(obf == nil) { 213 sys->fprint(stderr, "dd: can't dup file descriptor: %r\n"); 214 exits("dup"); 215 } 216 } 217 if(bs) 218 ibs = obs = bs; 219 if(ibs == obs && ctype == NULL) 220 fflag++; 221 if(ibs == 0 || obs == 0) { 222 sys->fprint(stderr, "dd: counts: cannot be zero\n"); 223 exits("counts"); 224 } 225 ibuf = array[ibs] of byte; 226 obuf = array[obs] of byte; 227 228 if(fflag) 229 obuf = ibuf; 230 231 sys->seek(obf, big obs*big oseekn, Sys->SEEKRELA); 232 sys->seek(ibf, big ibs*big iseekn, Sys->SEEKRELA); 233 while(skip) { 234 sys->read(ibf, ibuf, ibs); 235 skip--; 236 } 237 238 ibc = 0; 239 obc = 0; 240 cbc = 0; 241 op = 0; 242 ip := 0; 243 do { 244 if(ibc-- == 0) { 245 ibc = 0; 246 if(count==0 || nifr+nipr!=count) { 247 if(cflag&(NERR|SYNC)) 248 for(ip=0; ip < len ibuf; ip++) 249 ibuf[ip] = byte 0; 250 ibc = sys->read(ibf, ibuf, ibs); 251 } 252 if(ibc == -1) { 253 perror("read"); 254 if((cflag&NERR) == 0) { 255 flsh(); 256 term(); 257 } 258 ibc = 0; 259 for(c:=0; c<ibs; c++) 260 if(ibuf[c] != byte 0) 261 ibc = c; 262 stats(); 263 } 264 if(ibc == 0 && --files<=0) { 265 flsh(); 266 term(); 267 } 268 if(ibc != ibs) { 269 nipr++; 270 if(cflag&SYNC) 271 ibc = ibs; 272 } else 273 nifr++; 274 ip = 0; 275 c := (ibc>>1) & ~1; 276 if(cflag&SWAB && c) do { 277 a := ibuf[ip++]; 278 ibuf[ip-1] = ibuf[ip]; 279 ibuf[ip++] = a; 280 } while(--c); 281 if(fflag) { 282 obc = ibc; 283 flsh(); 284 ibc = 0; 285 } 286 continue; 287 } 288 c := 0; 289 c |= int ibuf[ip++]; 290 c &= 8r377; 291 conv(c); 292 } while(1); 293} 294 295conv(c: int) 296{ 297 case ctype { 298 NULL => null(c); 299 CNULL => cnull(c); 300 EBCDIC => ebcdic(c); 301 IBM => ibm(c); 302 ASCII => ascii(c); 303 BLOCK => block(c); 304 UNBLOCK => unblock(c); 305 } 306} 307 308flsh() 309{ 310 if(obc) { 311 if(obc == obs) 312 nofr++; 313 else 314 nopr++; 315 c := sys->write(obf, obuf, obc); 316 if(c != obc) { 317 perror("write"); 318 term(); 319 } 320 obc = 0; 321 } 322} 323 324match(s: string): int 325{ 326 if(len s > len arg) 327 return 0; 328 if(arg[:len s] == s) { 329 arg = arg[len s:]; 330 return 1; 331 } 332 return 0; 333} 334 335 336number(bignum: int): int 337{ 338 n := 0; 339 i := 0; 340 while(i < len arg && arg[i] >= '0' && arg[i] <= '9') 341 n = n*10 + arg[i++] - '0'; 342 for(;i<len arg; i++) case(arg[i]) { 343 'k' => 344 n *= 1024; 345 'b' => 346 n *= 512; 347 'x' => 348 arg = arg[i:]; 349 n *= number(BIG); 350 } 351 if(n>=bignum || n<0) { 352 sys->fprint(stderr, "dd: argument out of range\n"); 353 exits("range"); 354 } 355 return n; 356} 357 358cnull(cc: int) 359{ 360 c := cc; 361 if((cflag&UCASE) && c>='a' && c<='z') 362 c += 'A'-'a'; 363 if((cflag&LCASE) && c>='A' && c<='Z') 364 c += 'a'-'A'; 365 null(c); 366} 367 368null(c: int) 369{ 370 obuf[op++] = byte c; 371 if(++obc >= obs) { 372 flsh(); 373 op = 0; 374 } 375} 376 377ascii(cc: int) 378{ 379 c := etoa[cc]; 380 if(cbs == 0) { 381 cnull(int c); 382 return; 383 } 384 if(c == byte ' ') 385 nspace++; 386 else { 387 while(nspace > 0) { 388 null(' '); 389 nspace--; 390 } 391 cnull(int c); 392 } 393 394 if(++cbc >= cbs) { 395 null('\n'); 396 cbc = 0; 397 nspace = 0; 398 } 399} 400 401unblock(cc: int) 402{ 403 c := cc & 8r377; 404 if(cbs == 0) { 405 cnull(c); 406 return; 407 } 408 if(c == ' ') 409 nspace++; 410 else { 411 while(nspace > 0) { 412 null(' '); 413 nspace--; 414 } 415 cnull(c); 416 } 417 418 if(++cbc >= cbs) { 419 null('\n'); 420 cbc = 0; 421 nspace = 0; 422 } 423} 424 425ebcdic(cc: int) 426{ 427 428 c := cc; 429 if(cflag&UCASE && c>='a' && c<='z') 430 c += 'A'-'a'; 431 if(cflag&LCASE && c>='A' && c<='Z') 432 c += 'a'-'A'; 433 c = int atoe[c]; 434 if(cbs == 0) { 435 null(c); 436 return; 437 } 438 if(cc == '\n') { 439 while(cbc < cbs) { 440 null(int atoe[' ']); 441 cbc++; 442 } 443 cbc = 0; 444 return; 445 } 446 if(cbc == cbs) 447 ntrunc++; 448 cbc++; 449 if(cbc <= cbs) 450 null(c); 451} 452 453ibm(cc: int) 454{ 455 c := cc; 456 if(cflag&UCASE && c>='a' && c<='z') 457 c += 'A'-'a'; 458 if(cflag&LCASE && c>='A' && c<='Z') 459 c += 'a'-'A'; 460 c = int atoibm[c] & 8r377; 461 if(cbs == 0) { 462 null(c); 463 return; 464 } 465 if(cc == '\n') { 466 while(cbc < cbs) { 467 null(int atoibm[' ']); 468 cbc++; 469 } 470 cbc = 0; 471 return; 472 } 473 if(cbc == cbs) 474 ntrunc++; 475 cbc++; 476 if(cbc <= cbs) 477 null(c); 478} 479 480block(cc: int) 481{ 482 c := cc; 483 if(cflag&UCASE && c>='a' && c<='z') 484 c += 'A'-'a'; 485 if(cflag&LCASE && c>='A' && c<='Z') 486 c += 'a'-'A'; 487 c &= 8r377; 488 if(cbs == 0) { 489 null(c); 490 return; 491 } 492 if(cc == '\n') { 493 while(cbc < cbs) { 494 null(' '); 495 cbc++; 496 } 497 cbc = 0; 498 return; 499 } 500 if(cbc == cbs) 501 ntrunc++; 502 cbc++; 503 if(cbc <= cbs) 504 null(c); 505} 506 507term() 508{ 509 stats(); 510 exits(nil); 511} 512 513stats() 514{ 515 sys->fprint(stderr, "%ud+%ud records in\n", nifr, nipr); 516 sys->fprint(stderr, "%ud+%ud records out\n", nofr, nopr); 517 if(ntrunc) 518 sys->fprint(stderr, "%ud truncated records\n", ntrunc); 519} 520 521etoa := array[] of 522{ 523 byte 8r000,byte 8r001,byte 8r002,byte 8r003,byte 8r234,byte 8r011,byte 8r206,byte 8r177, 524 byte 8r227,byte 8r215,byte 8r216,byte 8r013,byte 8r014,byte 8r015,byte 8r016,byte 8r017, 525 byte 8r020,byte 8r021,byte 8r022,byte 8r023,byte 8r235,byte 8r205,byte 8r010,byte 8r207, 526 byte 8r030,byte 8r031,byte 8r222,byte 8r217,byte 8r034,byte 8r035,byte 8r036,byte 8r037, 527 byte 8r200,byte 8r201,byte 8r202,byte 8r203,byte 8r204,byte 8r012,byte 8r027,byte 8r033, 528 byte 8r210,byte 8r211,byte 8r212,byte 8r213,byte 8r214,byte 8r005,byte 8r006,byte 8r007, 529 byte 8r220,byte 8r221,byte 8r026,byte 8r223,byte 8r224,byte 8r225,byte 8r226,byte 8r004, 530 byte 8r230,byte 8r231,byte 8r232,byte 8r233,byte 8r024,byte 8r025,byte 8r236,byte 8r032, 531 byte 8r040,byte 8r240,byte 8r241,byte 8r242,byte 8r243,byte 8r244,byte 8r245,byte 8r246, 532 byte 8r247,byte 8r250,byte 8r133,byte 8r056,byte 8r074,byte 8r050,byte 8r053,byte 8r041, 533 byte 8r046,byte 8r251,byte 8r252,byte 8r253,byte 8r254,byte 8r255,byte 8r256,byte 8r257, 534 byte 8r260,byte 8r261,byte 8r135,byte 8r044,byte 8r052,byte 8r051,byte 8r073,byte 8r136, 535 byte 8r055,byte 8r057,byte 8r262,byte 8r263,byte 8r264,byte 8r265,byte 8r266,byte 8r267, 536 byte 8r270,byte 8r271,byte 8r174,byte 8r054,byte 8r045,byte 8r137,byte 8r076,byte 8r077, 537 byte 8r272,byte 8r273,byte 8r274,byte 8r275,byte 8r276,byte 8r277,byte 8r300,byte 8r301, 538 byte 8r302,byte 8r140,byte 8r072,byte 8r043,byte 8r100,byte 8r047,byte 8r075,byte 8r042, 539 byte 8r303,byte 8r141,byte 8r142,byte 8r143,byte 8r144,byte 8r145,byte 8r146,byte 8r147, 540 byte 8r150,byte 8r151,byte 8r304,byte 8r305,byte 8r306,byte 8r307,byte 8r310,byte 8r311, 541 byte 8r312,byte 8r152,byte 8r153,byte 8r154,byte 8r155,byte 8r156,byte 8r157,byte 8r160, 542 byte 8r161,byte 8r162,byte 8r313,byte 8r314,byte 8r315,byte 8r316,byte 8r317,byte 8r320, 543 byte 8r321,byte 8r176,byte 8r163,byte 8r164,byte 8r165,byte 8r166,byte 8r167,byte 8r170, 544 byte 8r171,byte 8r172,byte 8r322,byte 8r323,byte 8r324,byte 8r325,byte 8r326,byte 8r327, 545 byte 8r330,byte 8r331,byte 8r332,byte 8r333,byte 8r334,byte 8r335,byte 8r336,byte 8r337, 546 byte 8r340,byte 8r341,byte 8r342,byte 8r343,byte 8r344,byte 8r345,byte 8r346,byte 8r347, 547 byte 8r173,byte 8r101,byte 8r102,byte 8r103,byte 8r104,byte 8r105,byte 8r106,byte 8r107, 548 byte 8r110,byte 8r111,byte 8r350,byte 8r351,byte 8r352,byte 8r353,byte 8r354,byte 8r355, 549 byte 8r175,byte 8r112,byte 8r113,byte 8r114,byte 8r115,byte 8r116,byte 8r117,byte 8r120, 550 byte 8r121,byte 8r122,byte 8r356,byte 8r357,byte 8r360,byte 8r361,byte 8r362,byte 8r363, 551 byte 8r134,byte 8r237,byte 8r123,byte 8r124,byte 8r125,byte 8r126,byte 8r127,byte 8r130, 552 byte 8r131,byte 8r132,byte 8r364,byte 8r365,byte 8r366,byte 8r367,byte 8r370,byte 8r371, 553 byte 8r060,byte 8r061,byte 8r062,byte 8r063,byte 8r064,byte 8r065,byte 8r066,byte 8r067, 554 byte 8r070,byte 8r071,byte 8r372,byte 8r373,byte 8r374,byte 8r375,byte 8r376,byte 8r377, 555}; 556atoe := array[] of 557{ 558 byte 8r000,byte 8r001,byte 8r002,byte 8r003,byte 8r067,byte 8r055,byte 8r056,byte 8r057, 559 byte 8r026,byte 8r005,byte 8r045,byte 8r013,byte 8r014,byte 8r015,byte 8r016,byte 8r017, 560 byte 8r020,byte 8r021,byte 8r022,byte 8r023,byte 8r074,byte 8r075,byte 8r062,byte 8r046, 561 byte 8r030,byte 8r031,byte 8r077,byte 8r047,byte 8r034,byte 8r035,byte 8r036,byte 8r037, 562 byte 8r100,byte 8r117,byte 8r177,byte 8r173,byte 8r133,byte 8r154,byte 8r120,byte 8r175, 563 byte 8r115,byte 8r135,byte 8r134,byte 8r116,byte 8r153,byte 8r140,byte 8r113,byte 8r141, 564 byte 8r360,byte 8r361,byte 8r362,byte 8r363,byte 8r364,byte 8r365,byte 8r366,byte 8r367, 565 byte 8r370,byte 8r371,byte 8r172,byte 8r136,byte 8r114,byte 8r176,byte 8r156,byte 8r157, 566 byte 8r174,byte 8r301,byte 8r302,byte 8r303,byte 8r304,byte 8r305,byte 8r306,byte 8r307, 567 byte 8r310,byte 8r311,byte 8r321,byte 8r322,byte 8r323,byte 8r324,byte 8r325,byte 8r326, 568 byte 8r327,byte 8r330,byte 8r331,byte 8r342,byte 8r343,byte 8r344,byte 8r345,byte 8r346, 569 byte 8r347,byte 8r350,byte 8r351,byte 8r112,byte 8r340,byte 8r132,byte 8r137,byte 8r155, 570 byte 8r171,byte 8r201,byte 8r202,byte 8r203,byte 8r204,byte 8r205,byte 8r206,byte 8r207, 571 byte 8r210,byte 8r211,byte 8r221,byte 8r222,byte 8r223,byte 8r224,byte 8r225,byte 8r226, 572 byte 8r227,byte 8r230,byte 8r231,byte 8r242,byte 8r243,byte 8r244,byte 8r245,byte 8r246, 573 byte 8r247,byte 8r250,byte 8r251,byte 8r300,byte 8r152,byte 8r320,byte 8r241,byte 8r007, 574 byte 8r040,byte 8r041,byte 8r042,byte 8r043,byte 8r044,byte 8r025,byte 8r006,byte 8r027, 575 byte 8r050,byte 8r051,byte 8r052,byte 8r053,byte 8r054,byte 8r011,byte 8r012,byte 8r033, 576 byte 8r060,byte 8r061,byte 8r032,byte 8r063,byte 8r064,byte 8r065,byte 8r066,byte 8r010, 577 byte 8r070,byte 8r071,byte 8r072,byte 8r073,byte 8r004,byte 8r024,byte 8r076,byte 8r341, 578 byte 8r101,byte 8r102,byte 8r103,byte 8r104,byte 8r105,byte 8r106,byte 8r107,byte 8r110, 579 byte 8r111,byte 8r121,byte 8r122,byte 8r123,byte 8r124,byte 8r125,byte 8r126,byte 8r127, 580 byte 8r130,byte 8r131,byte 8r142,byte 8r143,byte 8r144,byte 8r145,byte 8r146,byte 8r147, 581 byte 8r150,byte 8r151,byte 8r160,byte 8r161,byte 8r162,byte 8r163,byte 8r164,byte 8r165, 582 byte 8r166,byte 8r167,byte 8r170,byte 8r200,byte 8r212,byte 8r213,byte 8r214,byte 8r215, 583 byte 8r216,byte 8r217,byte 8r220,byte 8r232,byte 8r233,byte 8r234,byte 8r235,byte 8r236, 584 byte 8r237,byte 8r240,byte 8r252,byte 8r253,byte 8r254,byte 8r255,byte 8r256,byte 8r257, 585 byte 8r260,byte 8r261,byte 8r262,byte 8r263,byte 8r264,byte 8r265,byte 8r266,byte 8r267, 586 byte 8r270,byte 8r271,byte 8r272,byte 8r273,byte 8r274,byte 8r275,byte 8r276,byte 8r277, 587 byte 8r312,byte 8r313,byte 8r314,byte 8r315,byte 8r316,byte 8r317,byte 8r332,byte 8r333, 588 byte 8r334,byte 8r335,byte 8r336,byte 8r337,byte 8r352,byte 8r353,byte 8r354,byte 8r355, 589 byte 8r356,byte 8r357,byte 8r372,byte 8r373,byte 8r374,byte 8r375,byte 8r376,byte 8r377, 590}; 591atoibm := array[] of 592{ 593 byte 8r000,byte 8r001,byte 8r002,byte 8r003,byte 8r067,byte 8r055,byte 8r056,byte 8r057, 594 byte 8r026,byte 8r005,byte 8r045,byte 8r013,byte 8r014,byte 8r015,byte 8r016,byte 8r017, 595 byte 8r020,byte 8r021,byte 8r022,byte 8r023,byte 8r074,byte 8r075,byte 8r062,byte 8r046, 596 byte 8r030,byte 8r031,byte 8r077,byte 8r047,byte 8r034,byte 8r035,byte 8r036,byte 8r037, 597 byte 8r100,byte 8r132,byte 8r177,byte 8r173,byte 8r133,byte 8r154,byte 8r120,byte 8r175, 598 byte 8r115,byte 8r135,byte 8r134,byte 8r116,byte 8r153,byte 8r140,byte 8r113,byte 8r141, 599 byte 8r360,byte 8r361,byte 8r362,byte 8r363,byte 8r364,byte 8r365,byte 8r366,byte 8r367, 600 byte 8r370,byte 8r371,byte 8r172,byte 8r136,byte 8r114,byte 8r176,byte 8r156,byte 8r157, 601 byte 8r174,byte 8r301,byte 8r302,byte 8r303,byte 8r304,byte 8r305,byte 8r306,byte 8r307, 602 byte 8r310,byte 8r311,byte 8r321,byte 8r322,byte 8r323,byte 8r324,byte 8r325,byte 8r326, 603 byte 8r327,byte 8r330,byte 8r331,byte 8r342,byte 8r343,byte 8r344,byte 8r345,byte 8r346, 604 byte 8r347,byte 8r350,byte 8r351,byte 8r255,byte 8r340,byte 8r275,byte 8r137,byte 8r155, 605 byte 8r171,byte 8r201,byte 8r202,byte 8r203,byte 8r204,byte 8r205,byte 8r206,byte 8r207, 606 byte 8r210,byte 8r211,byte 8r221,byte 8r222,byte 8r223,byte 8r224,byte 8r225,byte 8r226, 607 byte 8r227,byte 8r230,byte 8r231,byte 8r242,byte 8r243,byte 8r244,byte 8r245,byte 8r246, 608 byte 8r247,byte 8r250,byte 8r251,byte 8r300,byte 8r117,byte 8r320,byte 8r241,byte 8r007, 609 byte 8r040,byte 8r041,byte 8r042,byte 8r043,byte 8r044,byte 8r025,byte 8r006,byte 8r027, 610 byte 8r050,byte 8r051,byte 8r052,byte 8r053,byte 8r054,byte 8r011,byte 8r012,byte 8r033, 611 byte 8r060,byte 8r061,byte 8r032,byte 8r063,byte 8r064,byte 8r065,byte 8r066,byte 8r010, 612 byte 8r070,byte 8r071,byte 8r072,byte 8r073,byte 8r004,byte 8r024,byte 8r076,byte 8r341, 613 byte 8r101,byte 8r102,byte 8r103,byte 8r104,byte 8r105,byte 8r106,byte 8r107,byte 8r110, 614 byte 8r111,byte 8r121,byte 8r122,byte 8r123,byte 8r124,byte 8r125,byte 8r126,byte 8r127, 615 byte 8r130,byte 8r131,byte 8r142,byte 8r143,byte 8r144,byte 8r145,byte 8r146,byte 8r147, 616 byte 8r150,byte 8r151,byte 8r160,byte 8r161,byte 8r162,byte 8r163,byte 8r164,byte 8r165, 617 byte 8r166,byte 8r167,byte 8r170,byte 8r200,byte 8r212,byte 8r213,byte 8r214,byte 8r215, 618 byte 8r216,byte 8r217,byte 8r220,byte 8r232,byte 8r233,byte 8r234,byte 8r235,byte 8r236, 619 byte 8r237,byte 8r240,byte 8r252,byte 8r253,byte 8r254,byte 8r255,byte 8r256,byte 8r257, 620 byte 8r260,byte 8r261,byte 8r262,byte 8r263,byte 8r264,byte 8r265,byte 8r266,byte 8r267, 621 byte 8r270,byte 8r271,byte 8r272,byte 8r273,byte 8r274,byte 8r275,byte 8r276,byte 8r277, 622 byte 8r312,byte 8r313,byte 8r314,byte 8r315,byte 8r316,byte 8r317,byte 8r332,byte 8r333, 623 byte 8r334,byte 8r335,byte 8r336,byte 8r337,byte 8r352,byte 8r353,byte 8r354,byte 8r355, 624 byte 8r356,byte 8r357,byte 8r372,byte 8r373,byte 8r374,byte 8r375,byte 8r376,byte 8r377, 625}; 626