/decoders/audio/mp3Huffman.d

http://github.com/wilkie/djehuty · D · 946 lines · 894 code · 4 blank · 48 comment · 0 complexity · b07e6fdd183c2dc1e1eb316707f0ff24 MD5 · raw file

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