gm_x12 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1869) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.project +13 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +22 -0
  7. data/README.md +100 -0
  8. data/Rakefile +26 -0
  9. data/example/factory.rb +92 -0
  10. data/example/parse.rb +57 -0
  11. data/init.rb +1 -0
  12. data/lib/x12.rb +48 -0
  13. data/lib/x12/base.rb +226 -0
  14. data/lib/x12/composite.rb +37 -0
  15. data/lib/x12/empty.rb +43 -0
  16. data/lib/x12/field.rb +94 -0
  17. data/lib/x12/loop.rb +96 -0
  18. data/lib/x12/parser.rb +133 -0
  19. data/lib/x12/segment.rb +114 -0
  20. data/lib/x12/table.rb +44 -0
  21. data/lib/x12/version.rb +3 -0
  22. data/lib/x12/xmldefinitions.rb +173 -0
  23. data/misc/270.xml +152 -0
  24. data/misc/270interchange.xml +164 -0
  25. data/misc/271.xml +125 -0
  26. data/misc/276.xml +93 -0
  27. data/misc/277.xml +95 -0
  28. data/misc/832.xml +127 -0
  29. data/misc/834.xml +92 -0
  30. data/misc/835.xml +84 -0
  31. data/misc/837p.xml +255 -0
  32. data/misc/850.xml +66 -0
  33. data/misc/850dsd.xml +59 -0
  34. data/misc/997.xml +55 -0
  35. data/misc/997single.xml +835 -0
  36. data/misc/999.xml +54 -0
  37. data/misc/AAA.xml +31 -0
  38. data/misc/ACD.xml +30 -0
  39. data/misc/ACK.xml +56 -0
  40. data/misc/ACS.xml +31 -0
  41. data/misc/ACT.xml +36 -0
  42. data/misc/AD1.xml +32 -0
  43. data/misc/ADI.xml +31 -0
  44. data/misc/ADJ.xml +44 -0
  45. data/misc/ADT.xml +37 -0
  46. data/misc/ADV.xml +34 -0
  47. data/misc/ADX.xml +31 -0
  48. data/misc/AEI.xml +30 -0
  49. data/misc/AES.xml +32 -0
  50. data/misc/AIN.xml +40 -0
  51. data/misc/AK1.xml +30 -0
  52. data/misc/AK2.xml +30 -0
  53. data/misc/AK3.xml +31 -0
  54. data/misc/AK4.xml +31 -0
  55. data/misc/AK5.xml +33 -0
  56. data/misc/AK9.xml +36 -0
  57. data/misc/AM1.xml +33 -0
  58. data/misc/AMT.xml +30 -0
  59. data/misc/ANI.xml +36 -0
  60. data/misc/AOC.xml +32 -0
  61. data/misc/AOI.xml +40 -0
  62. data/misc/AOL.xml +35 -0
  63. data/misc/AOR.xml +40 -0
  64. data/misc/AP1.xml +40 -0
  65. data/misc/APE.xml +32 -0
  66. data/misc/API.xml +35 -0
  67. data/misc/APR.xml +30 -0
  68. data/misc/ARC.xml +30 -0
  69. data/misc/ARS.xml +32 -0
  70. data/misc/ASI.xml +30 -0
  71. data/misc/ASL.xml +31 -0
  72. data/misc/ASM.xml +30 -0
  73. data/misc/ASO.xml +38 -0
  74. data/misc/AST.xml +38 -0
  75. data/misc/AT1.xml +28 -0
  76. data/misc/AT2.xml +39 -0
  77. data/misc/AT3.xml +34 -0
  78. data/misc/AT4.xml +28 -0
  79. data/misc/AT5.xml +33 -0
  80. data/misc/AT6.xml +30 -0
  81. data/misc/AT7.xml +34 -0
  82. data/misc/AT8.xml +34 -0
  83. data/misc/AT9.xml +35 -0
  84. data/misc/ATA.xml +30 -0
  85. data/misc/ATH.xml +32 -0
  86. data/misc/ATN.xml +33 -0
  87. data/misc/ATR.xml +37 -0
  88. data/misc/ATV.xml +37 -0
  89. data/misc/AVA.xml +29 -0
  90. data/misc/AWD.xml +31 -0
  91. data/misc/AXL.xml +35 -0
  92. data/misc/B1.xml +33 -0
  93. data/misc/B10.xml +36 -0
  94. data/misc/B11.xml +38 -0
  95. data/misc/B12.xml +30 -0
  96. data/misc/B13.xml +29 -0
  97. data/misc/B2.xml +39 -0
  98. data/misc/B2A.xml +29 -0
  99. data/misc/B3.xml +41 -0
  100. data/misc/B3A.xml +29 -0
  101. data/misc/B3B.xml +38 -0
  102. data/misc/B4.xml +40 -0
  103. data/misc/B9.xml +30 -0
  104. data/misc/B9A.xml +28 -0
  105. data/misc/BA1.xml +39 -0
  106. data/misc/BA2.xml +38 -0
  107. data/misc/BAA.xml +33 -0
  108. data/misc/BAK.xml +37 -0
  109. data/misc/BAL.xml +30 -0
  110. data/misc/BAT.xml +31 -0
  111. data/misc/BAU.xml +33 -0
  112. data/misc/BAX.xml +41 -0
  113. data/misc/BBC.xml +29 -0
  114. data/misc/BC.xml +34 -0
  115. data/misc/BCA.xml +42 -0
  116. data/misc/BCD.xml +42 -0
  117. data/misc/BCH.xml +43 -0
  118. data/misc/BCI.xml +35 -0
  119. data/misc/BCM.xml +39 -0
  120. data/misc/BCO.xml +39 -0
  121. data/misc/BCP.xml +40 -0
  122. data/misc/BCQ.xml +34 -0
  123. data/misc/BCS.xml +39 -0
  124. data/misc/BCT.xml +37 -0
  125. data/misc/BCU.xml +34 -0
  126. data/misc/BDD.xml +30 -0
  127. data/misc/BDS.xml +30 -0
  128. data/misc/BEG.xml +39 -0
  129. data/misc/BEN.xml +33 -0
  130. data/misc/BEP.xml +29 -0
  131. data/misc/BFR.xml +40 -0
  132. data/misc/BFS.xml +37 -0
  133. data/misc/BGF.xml +30 -0
  134. data/misc/BGN.xml +36 -0
  135. data/misc/BGP.xml +36 -0
  136. data/misc/BHT.xml +33 -0
  137. data/misc/BIA.xml +33 -0
  138. data/misc/BIG.xml +38 -0
  139. data/misc/BIN.xml +29 -0
  140. data/misc/BIX.xml +38 -0
  141. data/misc/BJF.xml +34 -0
  142. data/misc/BL.xml +44 -0
  143. data/misc/BLI.xml +45 -0
  144. data/misc/BLN.xml +33 -0
  145. data/misc/BLR.xml +30 -0
  146. data/misc/BLS.xml +33 -0
  147. data/misc/BMA.xml +35 -0
  148. data/misc/BMG.xml +30 -0
  149. data/misc/BMM.xml +37 -0
  150. data/misc/BMP.xml +31 -0
  151. data/misc/BMS.xml +36 -0
  152. data/misc/BNR.xml +33 -0
  153. data/misc/BNX.xml +31 -0
  154. data/misc/BOL.xml +38 -0
  155. data/misc/BOR.xml +37 -0
  156. data/misc/BOS.xml +33 -0
  157. data/misc/BOX.xml +42 -0
  158. data/misc/BPA.xml +32 -0
  159. data/misc/BPP.xml +41 -0
  160. data/misc/BPR.xml +48 -0
  161. data/misc/BPT.xml +37 -0
  162. data/misc/BQR.xml +35 -0
  163. data/misc/BQT.xml +38 -0
  164. data/misc/BR.xml +38 -0
  165. data/misc/BRA.xml +34 -0
  166. data/misc/BRC.xml +32 -0
  167. data/misc/BRR.xml +33 -0
  168. data/misc/BSC.xml +31 -0
  169. data/misc/BSD.xml +36 -0
  170. data/misc/BSF.xml +30 -0
  171. data/misc/BSI.xml +36 -0
  172. data/misc/BSN.xml +34 -0
  173. data/misc/BSR.xml +39 -0
  174. data/misc/BSS.xml +38 -0
  175. data/misc/BT1.xml +38 -0
  176. data/misc/BTA.xml +31 -0
  177. data/misc/BTC.xml +39 -0
  178. data/misc/BTI.xml +41 -0
  179. data/misc/BTP.xml +37 -0
  180. data/misc/BTR.xml +35 -0
  181. data/misc/BTS.xml +42 -0
  182. data/misc/BUY.xml +32 -0
  183. data/misc/BVA.xml +52 -0
  184. data/misc/BVB.xml +34 -0
  185. data/misc/BVP.xml +38 -0
  186. data/misc/BVS.xml +39 -0
  187. data/misc/BW.xml +30 -0
  188. data/misc/BX.xml +41 -0
  189. data/misc/C001.xml +43 -0
  190. data/misc/C002.xml +33 -0
  191. data/misc/C003.xml +35 -0
  192. data/misc/C004.xml +32 -0
  193. data/misc/C005.xml +33 -0
  194. data/misc/C006.xml +33 -0
  195. data/misc/C007.xml +38 -0
  196. data/misc/C022.xml +37 -0
  197. data/misc/C023.xml +31 -0
  198. data/misc/C024.xml +33 -0
  199. data/misc/C028.xml +48 -0
  200. data/misc/C030.xml +31 -0
  201. data/misc/C033.xml +30 -0
  202. data/misc/C034.xml +30 -0
  203. data/misc/C035.xml +31 -0
  204. data/misc/C036.xml +33 -0
  205. data/misc/C037.xml +30 -0
  206. data/misc/C040.xml +34 -0
  207. data/misc/C042.xml +30 -0
  208. data/misc/C043.xml +32 -0
  209. data/misc/C045.xml +33 -0
  210. data/misc/C046.xml +33 -0
  211. data/misc/C047.xml +33 -0
  212. data/misc/C048.xml +32 -0
  213. data/misc/C050.xml +40 -0
  214. data/misc/C052.xml +32 -0
  215. data/misc/C053.xml +33 -0
  216. data/misc/C055.xml +36 -0
  217. data/misc/C056.xml +31 -0
  218. data/misc/C057.xml +29 -0
  219. data/misc/C2.xml +34 -0
  220. data/misc/C3.xml +31 -0
  221. data/misc/C4.xml +29 -0
  222. data/misc/C8.xml +31 -0
  223. data/misc/C8C.xml +30 -0
  224. data/misc/C998.xml +29 -0
  225. data/misc/C999.xml +29 -0
  226. data/misc/CA1.xml +29 -0
  227. data/misc/CAD.xml +36 -0
  228. data/misc/CAI.xml +34 -0
  229. data/misc/CAL.xml +43 -0
  230. data/misc/CAS.xml +46 -0
  231. data/misc/CAT.xml +34 -0
  232. data/misc/CB1.xml +29 -0
  233. data/misc/CBS.xml +30 -0
  234. data/misc/CCI.xml +37 -0
  235. data/misc/CD.xml +38 -0
  236. data/misc/CD1.xml +58 -0
  237. data/misc/CD2.xml +35 -0
  238. data/misc/CD3.xml +41 -0
  239. data/misc/CDA.xml +49 -0
  240. data/misc/CDD.xml +41 -0
  241. data/misc/CDI.xml +38 -0
  242. data/misc/CDS.xml +38 -0
  243. data/misc/CED.xml +32 -0
  244. data/misc/CF1.xml +33 -0
  245. data/misc/CF2.xml +37 -0
  246. data/misc/CFI.xml +34 -0
  247. data/misc/CFT.xml +36 -0
  248. data/misc/CGS.xml +32 -0
  249. data/misc/CHB.xml +36 -0
  250. data/misc/CHR.xml +30 -0
  251. data/misc/CI.xml +41 -0
  252. data/misc/CIC.xml +32 -0
  253. data/misc/CID.xml +34 -0
  254. data/misc/CIV.xml +45 -0
  255. data/misc/CL1.xml +31 -0
  256. data/misc/CLD.xml +32 -0
  257. data/misc/CLI.xml +33 -0
  258. data/misc/CLM.xml +48 -0
  259. data/misc/CLP.xml +41 -0
  260. data/misc/CLR.xml +31 -0
  261. data/misc/CM.xml +44 -0
  262. data/misc/CMA.xml +38 -0
  263. data/misc/CMC.xml +29 -0
  264. data/misc/CN1.xml +33 -0
  265. data/misc/COB.xml +31 -0
  266. data/misc/COM.xml +30 -0
  267. data/misc/CON_.xml +30 -0
  268. data/misc/CPR.xml +32 -0
  269. data/misc/CQ.xml +37 -0
  270. data/misc/CR1.xml +37 -0
  271. data/misc/CR2.xml +39 -0
  272. data/misc/CR3.xml +32 -0
  273. data/misc/CR4.xml +56 -0
  274. data/misc/CR5.xml +45 -0
  275. data/misc/CR6.xml +48 -0
  276. data/misc/CR7.xml +30 -0
  277. data/misc/CR8.xml +36 -0
  278. data/misc/CRC.xml +34 -0
  279. data/misc/CRD.xml +31 -0
  280. data/misc/CRI.xml +37 -0
  281. data/misc/CRO.xml +33 -0
  282. data/misc/CRS.xml +47 -0
  283. data/misc/CRT.xml +37 -0
  284. data/misc/CRV.xml +34 -0
  285. data/misc/CS.xml +45 -0
  286. data/misc/CSB.xml +29 -0
  287. data/misc/CSC.xml +36 -0
  288. data/misc/CSD.xml +36 -0
  289. data/misc/CSE.xml +39 -0
  290. data/misc/CSF.xml +30 -0
  291. data/misc/CSH.xml +37 -0
  292. data/misc/CSI.xml +31 -0
  293. data/misc/CSM.xml +30 -0
  294. data/misc/CSS.xml +34 -0
  295. data/misc/CST.xml +31 -0
  296. data/misc/CSU.xml +37 -0
  297. data/misc/CT.xml +30 -0
  298. data/misc/CTB.xml +34 -0
  299. data/misc/CTC.xml +37 -0
  300. data/misc/CTP.xml +38 -0
  301. data/misc/CTT.xml +34 -0
  302. data/misc/CTX.xml +33 -0
  303. data/misc/CUR.xml +48 -0
  304. data/misc/CV.xml +41 -0
  305. data/misc/CYC.xml +33 -0
  306. data/misc/D9.xml +39 -0
  307. data/misc/DAD.xml +42 -0
  308. data/misc/DAI.xml +30 -0
  309. data/misc/DAM.xml +43 -0
  310. data/misc/DB.xml +33 -0
  311. data/misc/DD.xml +37 -0
  312. data/misc/DDI.xml +28 -0
  313. data/misc/DED.xml +36 -0
  314. data/misc/DEF.xml +33 -0
  315. data/misc/DEG.xml +32 -0
  316. data/misc/DEL.xml +32 -0
  317. data/misc/DEP.xml +35 -0
  318. data/misc/DEX.xml +33 -0
  319. data/misc/DFI.xml +31 -0
  320. data/misc/DH.xml +30 -0
  321. data/misc/DIS.xml +33 -0
  322. data/misc/DK.xml +37 -0
  323. data/misc/DL.xml +38 -0
  324. data/misc/DLV.xml +32 -0
  325. data/misc/DM.xml +48 -0
  326. data/misc/DMA.xml +36 -0
  327. data/misc/DMG.xml +38 -0
  328. data/misc/DMI.xml +39 -0
  329. data/misc/DN.xml +31 -0
  330. data/misc/DN1.xml +31 -0
  331. data/misc/DN2.xml +32 -0
  332. data/misc/DOS.xml +34 -0
  333. data/misc/DP.xml +44 -0
  334. data/misc/DPN.xml +31 -0
  335. data/misc/DR.xml +33 -0
  336. data/misc/DRT.xml +33 -0
  337. data/misc/DSB.xml +35 -0
  338. data/misc/DTM.xml +33 -0
  339. data/misc/DTP.xml +30 -0
  340. data/misc/DVI.xml +41 -0
  341. data/misc/E01.xml +31 -0
  342. data/misc/E03.xml +34 -0
  343. data/misc/E1.xml +30 -0
  344. data/misc/E10.xml +32 -0
  345. data/misc/E13.xml +37 -0
  346. data/misc/E20.xml +31 -0
  347. data/misc/E22.xml +39 -0
  348. data/misc/E24.xml +34 -0
  349. data/misc/E30.xml +36 -0
  350. data/misc/E34.xml +31 -0
  351. data/misc/E4.xml +31 -0
  352. data/misc/E40.xml +31 -0
  353. data/misc/E41.xml +31 -0
  354. data/misc/E5.xml +31 -0
  355. data/misc/E6.xml +36 -0
  356. data/misc/E8.xml +29 -0
  357. data/misc/EA.xml +30 -0
  358. data/misc/EB.xml +40 -0
  359. data/misc/EC.xml +33 -0
  360. data/misc/ED.xml +35 -0
  361. data/misc/EDF.xml +38 -0
  362. data/misc/EFI.xml +43 -0
  363. data/misc/EI.xml +33 -0
  364. data/misc/EIA.xml +33 -0
  365. data/misc/ELV.xml +33 -0
  366. data/misc/EM.xml +34 -0
  367. data/misc/EMP.xml +37 -0
  368. data/misc/EMS.xml +42 -0
  369. data/misc/EMT.xml +35 -0
  370. data/misc/ENE.xml +32 -0
  371. data/misc/ENM.xml +35 -0
  372. data/misc/ENR.xml +47 -0
  373. data/misc/ENT.xml +36 -0
  374. data/misc/EQ.xml +31 -0
  375. data/misc/ER.xml +38 -0
  376. data/misc/ERI.xml +36 -0
  377. data/misc/ERP.xml +32 -0
  378. data/misc/ES.xml +33 -0
  379. data/misc/ESI.xml +36 -0
  380. data/misc/ETD.xml +32 -0
  381. data/misc/EXI.xml +35 -0
  382. data/misc/F01.xml +36 -0
  383. data/misc/F02.xml +36 -0
  384. data/misc/F04.xml +37 -0
  385. data/misc/F05.xml +30 -0
  386. data/misc/F07.xml +49 -0
  387. data/misc/F09.xml +39 -0
  388. data/misc/F10.xml +31 -0
  389. data/misc/F11.xml +37 -0
  390. data/misc/F12.xml +35 -0
  391. data/misc/F13.xml +33 -0
  392. data/misc/F14.xml +29 -0
  393. data/misc/F6X.xml +35 -0
  394. data/misc/F9.xml +39 -0
  395. data/misc/FA1.xml +30 -0
  396. data/misc/FA2.xml +29 -0
  397. data/misc/FAA.xml +42 -0
  398. data/misc/FAC.xml +33 -0
  399. data/misc/FBB.xml +34 -0
  400. data/misc/FC.xml +32 -0
  401. data/misc/FCL.xml +32 -0
  402. data/misc/FDA.xml +36 -0
  403. data/misc/FGS.xml +30 -0
  404. data/misc/FH.xml +31 -0
  405. data/misc/FIR.xml +39 -0
  406. data/misc/FIS.xml +31 -0
  407. data/misc/FK.xml +41 -0
  408. data/misc/FNA.xml +33 -0
  409. data/misc/FOB.xml +36 -0
  410. data/misc/FOS.xml +34 -0
  411. data/misc/FPT.xml +29 -0
  412. data/misc/FRM.xml +32 -0
  413. data/misc/FSA.xml +36 -0
  414. data/misc/FST.xml +40 -0
  415. data/misc/FTH.xml +31 -0
  416. data/misc/G01.xml +35 -0
  417. data/misc/G05.xml +35 -0
  418. data/misc/G07.xml +33 -0
  419. data/misc/G08.xml +31 -0
  420. data/misc/G1.xml +30 -0
  421. data/misc/G11.xml +37 -0
  422. data/misc/G12.xml +34 -0
  423. data/misc/G13.xml +33 -0
  424. data/misc/G14.xml +29 -0
  425. data/misc/G15.xml +31 -0
  426. data/misc/G17.xml +41 -0
  427. data/misc/G18.xml +31 -0
  428. data/misc/G19.xml +36 -0
  429. data/misc/G2.xml +29 -0
  430. data/misc/G20.xml +36 -0
  431. data/misc/G21.xml +37 -0
  432. data/misc/G22.xml +32 -0
  433. data/misc/G23.xml +43 -0
  434. data/misc/G24.xml +28 -0
  435. data/misc/G25.xml +30 -0
  436. data/misc/G26.xml +33 -0
  437. data/misc/G27.xml +33 -0
  438. data/misc/G28.xml +33 -0
  439. data/misc/G29.xml +30 -0
  440. data/misc/G3.xml +33 -0
  441. data/misc/G30.xml +29 -0
  442. data/misc/G31.xml +38 -0
  443. data/misc/G32.xml +32 -0
  444. data/misc/G33.xml +28 -0
  445. data/misc/G35.xml +30 -0
  446. data/misc/G36.xml +31 -0
  447. data/misc/G37.xml +30 -0
  448. data/misc/G38.xml +30 -0
  449. data/misc/G39.xml +56 -0
  450. data/misc/G4.xml +33 -0
  451. data/misc/G40.xml +36 -0
  452. data/misc/G42.xml +30 -0
  453. data/misc/G43.xml +31 -0
  454. data/misc/G45.xml +44 -0
  455. data/misc/G46.xml +39 -0
  456. data/misc/G47.xml +29 -0
  457. data/misc/G48.xml +36 -0
  458. data/misc/G49.xml +30 -0
  459. data/misc/G5.xml +44 -0
  460. data/misc/G50.xml +34 -0
  461. data/misc/G51.xml +35 -0
  462. data/misc/G53.xml +28 -0
  463. data/misc/G54.xml +33 -0
  464. data/misc/G55.xml +60 -0
  465. data/misc/G61.xml +32 -0
  466. data/misc/G62.xml +32 -0
  467. data/misc/G63.xml +31 -0
  468. data/misc/G66.xml +34 -0
  469. data/misc/G68.xml +42 -0
  470. data/misc/G69.xml +28 -0
  471. data/misc/G70.xml +37 -0
  472. data/misc/G72.xml +38 -0
  473. data/misc/G73.xml +28 -0
  474. data/misc/G76.xml +37 -0
  475. data/misc/G82.xml +39 -0
  476. data/misc/G83.xml +40 -0
  477. data/misc/G84.xml +30 -0
  478. data/misc/G85.xml +28 -0
  479. data/misc/G86.xml +29 -0
  480. data/misc/G87.xml +33 -0
  481. data/misc/G88.xml +32 -0
  482. data/misc/G89.xml +37 -0
  483. data/misc/G91.xml +29 -0
  484. data/misc/G92.xml +30 -0
  485. data/misc/G93.xml +35 -0
  486. data/misc/G94.xml +29 -0
  487. data/misc/G95.xml +34 -0
  488. data/misc/GA.xml +45 -0
  489. data/misc/GDP.xml +34 -0
  490. data/misc/GE.xml +29 -0
  491. data/misc/GF.xml +36 -0
  492. data/misc/GH.xml +31 -0
  493. data/misc/GID.xml +30 -0
  494. data/misc/GR.xml +49 -0
  495. data/misc/GR2.xml +39 -0
  496. data/misc/GR4.xml +38 -0
  497. data/misc/GR5.xml +32 -0
  498. data/misc/GRI.xml +38 -0
  499. data/misc/GRP.xml +31 -0
  500. data/misc/GS.xml +35 -0
  501. data/misc/GY.xml +42 -0
  502. data/misc/H1.xml +36 -0
  503. data/misc/H2.xml +29 -0
  504. data/misc/H3.xml +32 -0
  505. data/misc/H5.xml +30 -0
  506. data/misc/H6.xml +34 -0
  507. data/misc/HAD.xml +33 -0
  508. data/misc/HC.xml +34 -0
  509. data/misc/HCP.xml +42 -0
  510. data/misc/HCR.xml +31 -0
  511. data/misc/HD.xml +38 -0
  512. data/misc/HI.xml +39 -0
  513. data/misc/HL.xml +31 -0
  514. data/misc/HLH.xml +34 -0
  515. data/misc/HPL.xml +33 -0
  516. data/misc/HS.xml +32 -0
  517. data/misc/HSD.xml +35 -0
  518. data/misc/IC.xml +36 -0
  519. data/misc/ICH.xml +39 -0
  520. data/misc/ICM.xml +33 -0
  521. data/misc/ID.xml +30 -0
  522. data/misc/ID1.xml +61 -0
  523. data/misc/ID2.xml +35 -0
  524. data/misc/ID3.xml +48 -0
  525. data/misc/ID4.xml +36 -0
  526. data/misc/IDB.xml +32 -0
  527. data/misc/IDC.xml +31 -0
  528. data/misc/IEA.xml +29 -0
  529. data/misc/IGI.xml +33 -0
  530. data/misc/III.xml +36 -0
  531. data/misc/IIS.xml +41 -0
  532. data/misc/IK3.xml +30 -0
  533. data/misc/IK4.xml +30 -0
  534. data/misc/IK5.xml +32 -0
  535. data/misc/IM.xml +30 -0
  536. data/misc/IMA.xml +31 -0
  537. data/misc/IMM.xml +33 -0
  538. data/misc/IMP.xml +29 -0
  539. data/misc/IN1.xml +34 -0
  540. data/misc/IN2.xml +30 -0
  541. data/misc/INC.xml +32 -0
  542. data/misc/IND.xml +39 -0
  543. data/misc/INI.xml +30 -0
  544. data/misc/INQ.xml +29 -0
  545. data/misc/INR.xml +30 -0
  546. data/misc/INS.xml +44 -0
  547. data/misc/INT.xml +33 -0
  548. data/misc/INV.xml +34 -0
  549. data/misc/INX.xml +29 -0
  550. data/misc/IRA.xml +30 -0
  551. data/misc/IRP.xml +34 -0
  552. data/misc/IS1.xml +34 -0
  553. data/misc/IS2.xml +44 -0
  554. data/misc/ISA.xml +43 -0
  555. data/misc/ISC.xml +37 -0
  556. data/misc/ISD.xml +31 -0
  557. data/misc/ISI.xml +33 -0
  558. data/misc/ISR.xml +30 -0
  559. data/misc/ISS.xml +35 -0
  560. data/misc/IT1.xml +52 -0
  561. data/misc/IT3.xml +32 -0
  562. data/misc/IT8.xml +54 -0
  563. data/misc/ITA.xml +44 -0
  564. data/misc/ITC.xml +39 -0
  565. data/misc/ITD.xml +42 -0
  566. data/misc/IV1.xml +32 -0
  567. data/misc/JCT.xml +36 -0
  568. data/misc/JID.xml +33 -0
  569. data/misc/JIL.xml +34 -0
  570. data/misc/JIT.xml +29 -0
  571. data/misc/JL.xml +31 -0
  572. data/misc/JS.xml +31 -0
  573. data/misc/K1.xml +29 -0
  574. data/misc/K2.xml +28 -0
  575. data/misc/K3.xml +30 -0
  576. data/misc/L0.xml +42 -0
  577. data/misc/L1.xml +49 -0
  578. data/misc/L10.xml +30 -0
  579. data/misc/L11.xml +32 -0
  580. data/misc/L12.xml +29 -0
  581. data/misc/L13.xml +43 -0
  582. data/misc/L1A.xml +29 -0
  583. data/misc/L3.xml +42 -0
  584. data/misc/L4.xml +33 -0
  585. data/misc/L5.xml +37 -0
  586. data/misc/L7.xml +43 -0
  587. data/misc/L8.xml +38 -0
  588. data/misc/L9.xml +29 -0
  589. data/misc/LAD.xml +41 -0
  590. data/misc/LC.xml +34 -0
  591. data/misc/LC1.xml +39 -0
  592. data/misc/LCD.xml +33 -0
  593. data/misc/LCT.xml +39 -0
  594. data/misc/LDT.xml +31 -0
  595. data/misc/LE.xml +28 -0
  596. data/misc/LEP.xml +31 -0
  597. data/misc/LEQ.xml +36 -0
  598. data/misc/LET.xml +31 -0
  599. data/misc/LFG.xml +33 -0
  600. data/misc/LFH.xml +34 -0
  601. data/misc/LFI.xml +35 -0
  602. data/misc/LH.xml +33 -0
  603. data/misc/LH1.xml +38 -0
  604. data/misc/LH2.xml +40 -0
  605. data/misc/LH3.xml +31 -0
  606. data/misc/LH4.xml +39 -0
  607. data/misc/LH6.xml +31 -0
  608. data/misc/LHE.xml +32 -0
  609. data/misc/LHR.xml +30 -0
  610. data/misc/LHT.xml +30 -0
  611. data/misc/LIC.xml +35 -0
  612. data/misc/LID.xml +36 -0
  613. data/misc/LIE.xml +31 -0
  614. data/misc/LIN.xml +58 -0
  615. data/misc/LM.xml +29 -0
  616. data/misc/LN.xml +38 -0
  617. data/misc/LN1.xml +50 -0
  618. data/misc/LN2.xml +39 -0
  619. data/misc/LOC.xml +51 -0
  620. data/misc/LOD.xml +33 -0
  621. data/misc/LP.xml +34 -0
  622. data/misc/LQ.xml +29 -0
  623. data/misc/LRQ.xml +48 -0
  624. data/misc/LS.xml +28 -0
  625. data/misc/LS1.xml +34 -0
  626. data/misc/LT.xml +31 -0
  627. data/misc/LTE.xml +31 -0
  628. data/misc/LTR.xml +39 -0
  629. data/misc/LUC.xml +31 -0
  630. data/misc/LUI.xml +32 -0
  631. data/misc/LV.xml +29 -0
  632. data/misc/LX.xml +28 -0
  633. data/misc/M0.xml +31 -0
  634. data/misc/M1.xml +39 -0
  635. data/misc/M10.xml +41 -0
  636. data/misc/M11.xml +46 -0
  637. data/misc/M12.xml +38 -0
  638. data/misc/M13.xml +39 -0
  639. data/misc/M14.xml +38 -0
  640. data/misc/M15.xml +43 -0
  641. data/misc/M2.xml +35 -0
  642. data/misc/M20.xml +36 -0
  643. data/misc/M21.xml +42 -0
  644. data/misc/M3.xml +31 -0
  645. data/misc/M7.xml +32 -0
  646. data/misc/M7A.xml +33 -0
  647. data/misc/MAN.xml +33 -0
  648. data/misc/MBL.xml +32 -0
  649. data/misc/MC.xml +32 -0
  650. data/misc/MCD.xml +31 -0
  651. data/misc/MCT.xml +35 -0
  652. data/misc/MEA.xml +39 -0
  653. data/misc/MI.xml +32 -0
  654. data/misc/MI1.xml +30 -0
  655. data/misc/MIA.xml +51 -0
  656. data/misc/MIC.xml +45 -0
  657. data/misc/MIN.xml +43 -0
  658. data/misc/MIR.xml +39 -0
  659. data/misc/MIS.xml +32 -0
  660. data/misc/MIT.xml +31 -0
  661. data/misc/MKS.xml +30 -0
  662. data/misc/MLA.xml +35 -0
  663. data/misc/MLS.xml +31 -0
  664. data/misc/MNC.xml +44 -0
  665. data/misc/MOA.xml +36 -0
  666. data/misc/MPI.xml +34 -0
  667. data/misc/MPP.xml +35 -0
  668. data/misc/MRC.xml +36 -0
  669. data/misc/MS.xml +33 -0
  670. data/misc/MS1.xml +35 -0
  671. data/misc/MS2.xml +31 -0
  672. data/misc/MS3.xml +32 -0
  673. data/misc/MS4.xml +31 -0
  674. data/misc/MS5.xml +32 -0
  675. data/misc/MS6.xml +31 -0
  676. data/misc/MSG.xml +30 -0
  677. data/misc/MSI.xml +29 -0
  678. data/misc/MSS.xml +34 -0
  679. data/misc/MTX.xml +33 -0
  680. data/misc/N1.xml +33 -0
  681. data/misc/N10.xml +40 -0
  682. data/misc/N11.xml +30 -0
  683. data/misc/N12.xml +29 -0
  684. data/misc/N2.xml +29 -0
  685. data/misc/N3.xml +29 -0
  686. data/misc/N4.xml +34 -0
  687. data/misc/N5.xml +36 -0
  688. data/misc/N7.xml +51 -0
  689. data/misc/N7A.xml +36 -0
  690. data/misc/N7B.xml +33 -0
  691. data/misc/N8.xml +38 -0
  692. data/misc/N8A.xml +37 -0
  693. data/misc/N9.xml +34 -0
  694. data/misc/NA.xml +39 -0
  695. data/misc/NCA.xml +32 -0
  696. data/misc/NCD.xml +34 -0
  697. data/misc/NM1.xml +38 -0
  698. data/misc/NTE.xml +29 -0
  699. data/misc/NX1.xml +32 -0
  700. data/misc/NX2.xml +30 -0
  701. data/misc/OBI.xml +33 -0
  702. data/misc/OD.xml +31 -0
  703. data/misc/OI.xml +33 -0
  704. data/misc/OID.xml +38 -0
  705. data/misc/OOI.xml +31 -0
  706. data/misc/OPS.xml +33 -0
  707. data/misc/OPX.xml +32 -0
  708. data/misc/OQS.xml +29 -0
  709. data/misc/ORI.xml +28 -0
  710. data/misc/OTI.xml +44 -0
  711. data/misc/P1.xml +34 -0
  712. data/misc/P2.xml +30 -0
  713. data/misc/P4.xml +32 -0
  714. data/misc/P5.xml +30 -0
  715. data/misc/PAD.xml +32 -0
  716. data/misc/PAI.xml +32 -0
  717. data/misc/PAL.xml +44 -0
  718. data/misc/PAM.xml +42 -0
  719. data/misc/PAS.xml +37 -0
  720. data/misc/PAT.xml +36 -0
  721. data/misc/PBI.xml +35 -0
  722. data/misc/PCL.xml +34 -0
  723. data/misc/PCR.xml +29 -0
  724. data/misc/PCS.xml +38 -0
  725. data/misc/PCT.xml +29 -0
  726. data/misc/PD.xml +37 -0
  727. data/misc/PDD.xml +32 -0
  728. data/misc/PDE.xml +31 -0
  729. data/misc/PDI.xml +31 -0
  730. data/misc/PDL.xml +39 -0
  731. data/misc/PDP.xml +30 -0
  732. data/misc/PDR.xml +31 -0
  733. data/misc/PDS.xml +30 -0
  734. data/misc/PEN.xml +36 -0
  735. data/misc/PER.xml +36 -0
  736. data/misc/PEX.xml +35 -0
  737. data/misc/PI.xml +42 -0
  738. data/misc/PID.xml +36 -0
  739. data/misc/PIN.xml +34 -0
  740. data/misc/PKD.xml +32 -0
  741. data/misc/PKG.xml +33 -0
  742. data/misc/PKL.xml +40 -0
  743. data/misc/PL.xml +33 -0
  744. data/misc/PLA.xml +32 -0
  745. data/misc/PLB.xml +41 -0
  746. data/misc/PLC.xml +29 -0
  747. data/misc/PLD.xml +31 -0
  748. data/misc/PLI.xml +36 -0
  749. data/misc/PM.xml +33 -0
  750. data/misc/PO1.xml +52 -0
  751. data/misc/PO3.xml +35 -0
  752. data/misc/PO4.xml +45 -0
  753. data/misc/POC.xml +54 -0
  754. data/misc/POD.xml +30 -0
  755. data/misc/PPA.xml +33 -0
  756. data/misc/PPD.xml +40 -0
  757. data/misc/PPL.xml +32 -0
  758. data/misc/PPY.xml +35 -0
  759. data/misc/PR.xml +36 -0
  760. data/misc/PR1.xml +40 -0
  761. data/misc/PR2.xml +36 -0
  762. data/misc/PRC.xml +39 -0
  763. data/misc/PRD.xml +38 -0
  764. data/misc/PRF.xml +34 -0
  765. data/misc/PRI.xml +41 -0
  766. data/misc/PRJ.xml +31 -0
  767. data/misc/PRM.xml +40 -0
  768. data/misc/PRR.xml +38 -0
  769. data/misc/PRS.xml +29 -0
  770. data/misc/PRT.xml +31 -0
  771. data/misc/PRV.xml +33 -0
  772. data/misc/PS.xml +41 -0
  773. data/misc/PS1.xml +30 -0
  774. data/misc/PSA.xml +32 -0
  775. data/misc/PSC.xml +52 -0
  776. data/misc/PSD.xml +36 -0
  777. data/misc/PT.xml +38 -0
  778. data/misc/PTD.xml +33 -0
  779. data/misc/PTF.xml +34 -0
  780. data/misc/PTS.xml +38 -0
  781. data/misc/PUN.xml +32 -0
  782. data/misc/PWK.xml +36 -0
  783. data/misc/PYD.xml +32 -0
  784. data/misc/PYM.xml +34 -0
  785. data/misc/PYT.xml +35 -0
  786. data/misc/Q2.xml +43 -0
  787. data/misc/Q3.xml +29 -0
  788. data/misc/Q5.xml +45 -0
  789. data/misc/Q7.xml +30 -0
  790. data/misc/Q8.xml +37 -0
  791. data/misc/QTY.xml +31 -0
  792. data/misc/R1.xml +40 -0
  793. data/misc/R11.xml +34 -0
  794. data/misc/R12.xml +37 -0
  795. data/misc/R13.xml +39 -0
  796. data/misc/R2.xml +40 -0
  797. data/misc/R2A.xml +37 -0
  798. data/misc/R2B.xml +30 -0
  799. data/misc/R2C.xml +31 -0
  800. data/misc/R2D.xml +29 -0
  801. data/misc/R3.xml +39 -0
  802. data/misc/R4.xml +35 -0
  803. data/misc/R9.xml +36 -0
  804. data/misc/RA.xml +37 -0
  805. data/misc/RAB.xml +37 -0
  806. data/misc/RAP.xml +34 -0
  807. data/misc/RB.xml +35 -0
  808. data/misc/RC.xml +36 -0
  809. data/misc/RCD.xml +48 -0
  810. data/misc/RCR.xml +29 -0
  811. data/misc/RD.xml +31 -0
  812. data/misc/RDD.xml +32 -0
  813. data/misc/RDI.xml +32 -0
  814. data/misc/RDM.xml +32 -0
  815. data/misc/RDR.xml +32 -0
  816. data/misc/RDT.xml +33 -0
  817. data/misc/REA.xml +41 -0
  818. data/misc/REC.xml +40 -0
  819. data/misc/RED.xml +33 -0
  820. data/misc/REF.xml +31 -0
  821. data/misc/REL.xml +29 -0
  822. data/misc/REN.xml +34 -0
  823. data/misc/REP.xml +47 -0
  824. data/misc/REQ.xml +29 -0
  825. data/misc/RES.xml +34 -0
  826. data/misc/RET.xml +32 -0
  827. data/misc/RH.xml +30 -0
  828. data/misc/RIC.xml +45 -0
  829. data/misc/RLD.xml +31 -0
  830. data/misc/RLT.xml +39 -0
  831. data/misc/RMR.xml +35 -0
  832. data/misc/RMT.xml +37 -0
  833. data/misc/RO.xml +36 -0
  834. data/misc/RP.xml +36 -0
  835. data/misc/RPA.xml +32 -0
  836. data/misc/RQS.xml +32 -0
  837. data/misc/RRA.xml +29 -0
  838. data/misc/RS.xml +33 -0
  839. data/misc/RSC.xml +31 -0
  840. data/misc/RSD.xml +30 -0
  841. data/misc/RST.xml +29 -0
  842. data/misc/RT.xml +39 -0
  843. data/misc/RT1.xml +35 -0
  844. data/misc/RTE.xml +32 -0
  845. data/misc/RTT.xml +29 -0
  846. data/misc/RU1.xml +36 -0
  847. data/misc/RU2.xml +35 -0
  848. data/misc/RU3.xml +56 -0
  849. data/misc/RYL.xml +31 -0
  850. data/misc/S1.xml +33 -0
  851. data/misc/S2.xml +30 -0
  852. data/misc/S4A.xml +38 -0
  853. data/misc/S5.xml +38 -0
  854. data/misc/S9.xml +35 -0
  855. data/misc/SA.xml +32 -0
  856. data/misc/SAC.xml +43 -0
  857. data/misc/SAD.xml +34 -0
  858. data/misc/SAL.xml +34 -0
  859. data/misc/SB.xml +28 -0
  860. data/misc/SBR.xml +36 -0
  861. data/misc/SBT.xml +30 -0
  862. data/misc/SC.xml +29 -0
  863. data/misc/SCA.xml +34 -0
  864. data/misc/SCD.xml +34 -0
  865. data/misc/SCH.xml +39 -0
  866. data/misc/SCL.xml +37 -0
  867. data/misc/SCM.xml +31 -0
  868. data/misc/SCN.xml +32 -0
  869. data/misc/SCP.xml +31 -0
  870. data/misc/SCR.xml +51 -0
  871. data/misc/SCS.xml +29 -0
  872. data/misc/SCT.xml +38 -0
  873. data/misc/SD1.xml +35 -0
  874. data/misc/SDP.xml +35 -0
  875. data/misc/SDQ.xml +50 -0
  876. data/misc/SE.xml +29 -0
  877. data/misc/SER.xml +38 -0
  878. data/misc/SES.xml +41 -0
  879. data/misc/SFC.xml +29 -0
  880. data/misc/SG.xml +33 -0
  881. data/misc/SHD.xml +41 -0
  882. data/misc/SHI.xml +32 -0
  883. data/misc/SHP.xml +34 -0
  884. data/misc/SHR.xml +29 -0
  885. data/misc/SI.xml +48 -0
  886. data/misc/SID.xml +33 -0
  887. data/misc/SII.xml +34 -0
  888. data/misc/SIN.xml +33 -0
  889. data/misc/SL1.xml +36 -0
  890. data/misc/SLA.xml +35 -0
  891. data/misc/SLI.xml +49 -0
  892. data/misc/SLN.xml +55 -0
  893. data/misc/SMA.xml +32 -0
  894. data/misc/SMB.xml +36 -0
  895. data/misc/SMD.xml +30 -0
  896. data/misc/SMO.xml +34 -0
  897. data/misc/SMR.xml +31 -0
  898. data/misc/SMS.xml +40 -0
  899. data/misc/SN1.xml +35 -0
  900. data/misc/SOI.xml +32 -0
  901. data/misc/SOM.xml +40 -0
  902. data/misc/SP.xml +32 -0
  903. data/misc/SPA.xml +38 -0
  904. data/misc/SPE.xml +31 -0
  905. data/misc/SPI.xml +42 -0
  906. data/misc/SPK.xml +32 -0
  907. data/misc/SPR.xml +36 -0
  908. data/misc/SPS.xml +33 -0
  909. data/misc/SPY.xml +30 -0
  910. data/misc/SR.xml +38 -0
  911. data/misc/SRA.xml +29 -0
  912. data/misc/SRD.xml +47 -0
  913. data/misc/SRE.xml +29 -0
  914. data/misc/SRM.xml +43 -0
  915. data/misc/SRT.xml +40 -0
  916. data/misc/SS.xml +36 -0
  917. data/misc/SSC.xml +35 -0
  918. data/misc/SSD.xml +31 -0
  919. data/misc/SSE.xml +32 -0
  920. data/misc/SSS.xml +36 -0
  921. data/misc/SST.xml +36 -0
  922. data/misc/ST.xml +30 -0
  923. data/misc/STA.xml +35 -0
  924. data/misc/STC.xml +39 -0
  925. data/misc/STP.xml +36 -0
  926. data/misc/STS.xml +32 -0
  927. data/misc/SUM.xml +45 -0
  928. data/misc/SUP.xml +31 -0
  929. data/misc/SV.xml +31 -0
  930. data/misc/SV1.xml +48 -0
  931. data/misc/SV2.xml +37 -0
  932. data/misc/SV3.xml +38 -0
  933. data/misc/SV4.xml +45 -0
  934. data/misc/SV5.xml +34 -0
  935. data/misc/SV6.xml +34 -0
  936. data/misc/SV7.xml +33 -0
  937. data/misc/SVA.xml +30 -0
  938. data/misc/SVC.xml +34 -0
  939. data/misc/SVD.xml +33 -0
  940. data/misc/SW.xml +36 -0
  941. data/misc/T1.xml +36 -0
  942. data/misc/T1002.xml +30 -0
  943. data/misc/T1004.xml +305 -0
  944. data/misc/T1005.xml +107 -0
  945. data/misc/T1006.xml +35 -0
  946. data/misc/T1007.xml +31 -0
  947. data/misc/T1008.xml +58 -0
  948. data/misc/T1009.xml +116 -0
  949. data/misc/T1012.xml +53 -0
  950. data/misc/T1013.xml +113 -0
  951. data/misc/T1015.xml +33 -0
  952. data/misc/T1016.xml +33 -0
  953. data/misc/T1017.xml +82 -0
  954. data/misc/T1019.xml +30 -0
  955. data/misc/T102.xml +32 -0
  956. data/misc/T1020.xml +30 -0
  957. data/misc/T1023.xml +31 -0
  958. data/misc/T1025.xml +30 -0
  959. data/misc/T1026.xml +34 -0
  960. data/misc/T1029.xml +68 -0
  961. data/misc/T103.2.xml +84 -0
  962. data/misc/T1030.xml +41 -0
  963. data/misc/T1031.xml +40 -0
  964. data/misc/T1032.xml +75 -0
  965. data/misc/T1033.xml +36 -0
  966. data/misc/T104.xml +31 -0
  967. data/misc/T1042.xml +32 -0
  968. data/misc/T1044.xml +41 -0
  969. data/misc/T1045.xml +32 -0
  970. data/misc/T1046.xml +34 -0
  971. data/misc/T1047.xml +40 -0
  972. data/misc/T1048.xml +36 -0
  973. data/misc/T1053.xml +29 -0
  974. data/misc/T1054.xml +30 -0
  975. data/misc/T1062.xml +47 -0
  976. data/misc/T1065.xml +43 -0
  977. data/misc/T1066.xml +45 -0
  978. data/misc/T1067.xml +39 -0
  979. data/misc/T1068.xml +34 -0
  980. data/misc/T1069.xml +181 -0
  981. data/misc/T107.xml +64 -0
  982. data/misc/T1070.xml +42 -0
  983. data/misc/T1071.xml +104 -0
  984. data/misc/T1072.xml +31 -0
  985. data/misc/T1073.xml +31 -0
  986. data/misc/T1074.xml +101 -0
  987. data/misc/T1075.xml +40 -0
  988. data/misc/T1076.xml +31 -0
  989. data/misc/T1077.xml +31 -0
  990. data/misc/T1078.xml +43 -0
  991. data/misc/T1079.xml +31 -0
  992. data/misc/T108.xml +59 -0
  993. data/misc/T1080.xml +31 -0
  994. data/misc/T1081.xml +72 -0
  995. data/misc/T1082.xml +48 -0
  996. data/misc/T1083.xml +76 -0
  997. data/misc/T1084.xml +29 -0
  998. data/misc/T1085.xml +58 -0
  999. data/misc/T1086.xml +34 -0
  1000. data/misc/T1089.xml +98 -0
  1001. data/misc/T1090.xml +30 -0
  1002. data/misc/T1091.xml +39 -0
  1003. data/misc/T1093.xml +45 -0
  1004. data/misc/T1097.xml +31 -0
  1005. data/misc/T1098.xml +30 -0
  1006. data/misc/T1099.xml +31 -0
  1007. data/misc/T11.xml +47 -0
  1008. data/misc/T110.xml +47 -0
  1009. data/misc/T1100.xml +36 -0
  1010. data/misc/T1101.xml +34 -0
  1011. data/misc/T1102.xml +30 -0
  1012. data/misc/T1103.xml +35 -0
  1013. data/misc/T1104.xml +49 -0
  1014. data/misc/T1105.xml +32 -0
  1015. data/misc/T1106.xml +101 -0
  1016. data/misc/T1107.xml +43 -0
  1017. data/misc/T1108.xml +39 -0
  1018. data/misc/T1109.xml +50 -0
  1019. data/misc/T1113.xml +43 -0
  1020. data/misc/T1122.xml +34 -0
  1021. data/misc/T1123.xml +46 -0
  1022. data/misc/T1127.xml +60 -0
  1023. data/misc/T1129.xml +184 -0
  1024. data/misc/T1130.xml +29 -0
  1025. data/misc/T1131.xml +120 -0
  1026. data/misc/T1132.xml +68 -0
  1027. data/misc/T1133.xml +112 -0
  1028. data/misc/T1134.xml +36 -0
  1029. data/misc/T1135.xml +40 -0
  1030. data/misc/T1136.xml +447 -0
  1031. data/misc/T1138.xml +33 -0
  1032. data/misc/T1139.xml +42 -0
  1033. data/misc/T1140.xml +32 -0
  1034. data/misc/T1141.xml +43 -0
  1035. data/misc/T1142.xml +65 -0
  1036. data/misc/T1143.xml +36 -0
  1037. data/misc/T1146.xml +33 -0
  1038. data/misc/T1147.xml +47 -0
  1039. data/misc/T115.xml +60 -0
  1040. data/misc/T1150.xml +30 -0
  1041. data/misc/T1152.xml +30 -0
  1042. data/misc/T1153.xml +41 -0
  1043. data/misc/T1154.xml +31 -0
  1044. data/misc/T1156.xml +38 -0
  1045. data/misc/T1157.xml +31 -0
  1046. data/misc/T1159.xml +56 -0
  1047. data/misc/T1160.xml +41 -0
  1048. data/misc/T1161.xml +57 -0
  1049. data/misc/T1162.xml +35 -0
  1050. data/misc/T1163.xml +35 -0
  1051. data/misc/T1164.xml +36 -0
  1052. data/misc/T1165.xml +30 -0
  1053. data/misc/T1166.xml +77 -0
  1054. data/misc/T1168.xml +43 -0
  1055. data/misc/T1172.xml +109 -0
  1056. data/misc/T1173.xml +46 -0
  1057. data/misc/T1176.xml +97 -0
  1058. data/misc/T1179.xml +29 -0
  1059. data/misc/T1181.xml +46 -0
  1060. data/misc/T1185.xml +48 -0
  1061. data/misc/T1186.xml +144 -0
  1062. data/misc/T1187.xml +60 -0
  1063. data/misc/T1188.xml +144 -0
  1064. data/misc/T1189.xml +33 -0
  1065. data/misc/T1193.xml +61 -0
  1066. data/misc/T1196.xml +189 -0
  1067. data/misc/T1197.xml +46 -0
  1068. data/misc/T1198.xml +30 -0
  1069. data/misc/T1199.xml +32 -0
  1070. data/misc/T120.xml +31 -0
  1071. data/misc/T1201.xml +37 -0
  1072. data/misc/T1202.xml +32 -0
  1073. data/misc/T1203.xml +143 -0
  1074. data/misc/T1205.xml +79 -0
  1075. data/misc/T1207.xml +45 -0
  1076. data/misc/T1209.xml +34 -0
  1077. data/misc/T121.xml +52 -0
  1078. data/misc/T1211.xml +35 -0
  1079. data/misc/T1212.xml +32 -0
  1080. data/misc/T1213.xml +40 -0
  1081. data/misc/T1215.xml +32 -0
  1082. data/misc/T1216.xml +33 -0
  1083. data/misc/T1218.xml +32 -0
  1084. data/misc/T1219.xml +38 -0
  1085. data/misc/T122.xml +204 -0
  1086. data/misc/T1220.xml +30 -0
  1087. data/misc/T1221.xml +53 -0
  1088. data/misc/T1222.xml +38 -0
  1089. data/misc/T1223.xml +35 -0
  1090. data/misc/T1224.xml +62 -0
  1091. data/misc/T1225.xml +39 -0
  1092. data/misc/T1226.xml +43 -0
  1093. data/misc/T1227.xml +34 -0
  1094. data/misc/T1229.xml +32 -0
  1095. data/misc/T1230.xml +87 -0
  1096. data/misc/T1231.xml +38 -0
  1097. data/misc/T1232.xml +50 -0
  1098. data/misc/T1233.xml +49 -0
  1099. data/misc/T1234.xml +31 -0
  1100. data/misc/T1236.xml +31 -0
  1101. data/misc/T1237.xml +32 -0
  1102. data/misc/T1238.xml +30 -0
  1103. data/misc/T1239.xml +36 -0
  1104. data/misc/T1240.xml +57 -0
  1105. data/misc/T1241.xml +36 -0
  1106. data/misc/T1246.xml +30 -0
  1107. data/misc/T125.xml +47 -0
  1108. data/misc/T1250.xml +68 -0
  1109. data/misc/T1254.xml +41 -0
  1110. data/misc/T1257.xml +52 -0
  1111. data/misc/T1262.xml +98 -0
  1112. data/misc/T1264.xml +59 -0
  1113. data/misc/T1265.xml +34 -0
  1114. data/misc/T1266.xml +43 -0
  1115. data/misc/T1267.xml +33 -0
  1116. data/misc/T1268.xml +30 -0
  1117. data/misc/T1270.xml +917 -0
  1118. data/misc/T1273.xml +30 -0
  1119. data/misc/T1275.xml +31 -0
  1120. data/misc/T1277.xml +31 -0
  1121. data/misc/T1278.xml +29 -0
  1122. data/misc/T128.xml +1712 -0
  1123. data/misc/T1280.xml +43 -0
  1124. data/misc/T1292.xml +41 -0
  1125. data/misc/T1293.xml +56 -0
  1126. data/misc/T1294.xml +41 -0
  1127. data/misc/T1295.xml +55 -0
  1128. data/misc/T1297.xml +33 -0
  1129. data/misc/T1300.xml +1116 -0
  1130. data/misc/T1303.xml +35 -0
  1131. data/misc/T1304.xml +37 -0
  1132. data/misc/T1307.xml +216 -0
  1133. data/misc/T1308.xml +38 -0
  1134. data/misc/T1309.xml +144 -0
  1135. data/misc/T1310.xml +30 -0
  1136. data/misc/T1311.xml +38 -0
  1137. data/misc/T1312.xml +30 -0
  1138. data/misc/T1316.xml +31 -0
  1139. data/misc/T1317.xml +33 -0
  1140. data/misc/T1319.xml +37 -0
  1141. data/misc/T132.xml +33 -0
  1142. data/misc/T1320.xml +31 -0
  1143. data/misc/T1321.xml +1327 -0
  1144. data/misc/T1322.xml +41 -0
  1145. data/misc/T1327.xml +31 -0
  1146. data/misc/T1329.xml +37 -0
  1147. data/misc/T133.xml +50 -0
  1148. data/misc/T1330.xml +100 -0
  1149. data/misc/T1332.xml +29 -0
  1150. data/misc/T1333.xml +33 -0
  1151. data/misc/T1335.xml +31 -0
  1152. data/misc/T1336.xml +74 -0
  1153. data/misc/T1337.xml +35 -0
  1154. data/misc/T1338.xml +44 -0
  1155. data/misc/T1340.xml +30 -0
  1156. data/misc/T1342.xml +34 -0
  1157. data/misc/T1343.xml +74 -0
  1158. data/misc/T1344.xml +30 -0
  1159. data/misc/T1345.xml +36 -0
  1160. data/misc/T1346.xml +30 -0
  1161. data/misc/T1347.xml +31 -0
  1162. data/misc/T1348.xml +33 -0
  1163. data/misc/T1349.xml +34 -0
  1164. data/misc/T1350.xml +30 -0
  1165. data/misc/T1351.xml +32 -0
  1166. data/misc/T1355.xml +35 -0
  1167. data/misc/T1356.xml +31 -0
  1168. data/misc/T1357.xml +35 -0
  1169. data/misc/T1358.xml +29 -0
  1170. data/misc/T1359.xml +31 -0
  1171. data/misc/T1360.xml +34 -0
  1172. data/misc/T1361.xml +43 -0
  1173. data/misc/T1362.xml +33 -0
  1174. data/misc/T1363.xml +33 -0
  1175. data/misc/T1364.xml +35 -0
  1176. data/misc/T1365.xml +210 -0
  1177. data/misc/T1366.xml +37 -0
  1178. data/misc/T1367.xml +55 -0
  1179. data/misc/T1368.xml +31 -0
  1180. data/misc/T1369.xml +34 -0
  1181. data/misc/T1370.xml +37 -0
  1182. data/misc/T1373.xml +41 -0
  1183. data/misc/T1376.xml +55 -0
  1184. data/misc/T1378.xml +36 -0
  1185. data/misc/T1379.xml +49 -0
  1186. data/misc/T1382.xml +32 -0
  1187. data/misc/T1383.xml +45 -0
  1188. data/misc/T1384.xml +42 -0
  1189. data/misc/T1387.xml +61 -0
  1190. data/misc/T139.xml +40 -0
  1191. data/misc/T1390.xml +66 -0
  1192. data/misc/T1393.xml +31 -0
  1193. data/misc/T1395.xml +35 -0
  1194. data/misc/T1396.xml +30 -0
  1195. data/misc/T1398.xml +68 -0
  1196. data/misc/T1401.xml +44 -0
  1197. data/misc/T1402.xml +56 -0
  1198. data/misc/T1403.xml +30 -0
  1199. data/misc/T1404.xml +29 -0
  1200. data/misc/T1407.xml +29 -0
  1201. data/misc/T1408.xml +30 -0
  1202. data/misc/T1413.xml +30 -0
  1203. data/misc/T1420.xml +41 -0
  1204. data/misc/T1422.xml +32 -0
  1205. data/misc/T1423.xml +89 -0
  1206. data/misc/T1425.xml +36 -0
  1207. data/misc/T1426.xml +43 -0
  1208. data/misc/T1428.xml +29 -0
  1209. data/misc/T1429.xml +76 -0
  1210. data/misc/T143.xml +341 -0
  1211. data/misc/T1431.xml +33 -0
  1212. data/misc/T1432.xml +51 -0
  1213. data/misc/T1434.xml +34 -0
  1214. data/misc/T1439.xml +37 -0
  1215. data/misc/T146.xml +58 -0
  1216. data/misc/T1465.xml +48 -0
  1217. data/misc/T1466.xml +49 -0
  1218. data/misc/T1468.xml +64 -0
  1219. data/misc/T1469.xml +33 -0
  1220. data/misc/T147.xml +62 -0
  1221. data/misc/T1473.xml +42 -0
  1222. data/misc/T1476.xml +38 -0
  1223. data/misc/T1484.xml +37 -0
  1224. data/misc/T1485.xml +29 -0
  1225. data/misc/T1487.xml +58 -0
  1226. data/misc/T1488.xml +44 -0
  1227. data/misc/T1489.xml +39 -0
  1228. data/misc/T1491.xml +30 -0
  1229. data/misc/T1492.xml +37 -0
  1230. data/misc/T1493.xml +35 -0
  1231. data/misc/T1496.xml +81 -0
  1232. data/misc/T1499.xml +29 -0
  1233. data/misc/T150.xml +1125 -0
  1234. data/misc/T1511.xml +34 -0
  1235. data/misc/T1514.xml +41 -0
  1236. data/misc/T152.xml +577 -0
  1237. data/misc/T1520.xml +52 -0
  1238. data/misc/T1521.xml +41 -0
  1239. data/misc/T1522.xml +52 -0
  1240. data/misc/T1523.xml +35 -0
  1241. data/misc/T1525.xml +34 -0
  1242. data/misc/T1526.xml +32 -0
  1243. data/misc/T1527.xml +33 -0
  1244. data/misc/T1540.xml +31 -0
  1245. data/misc/T1543.xml +29 -0
  1246. data/misc/T1546.xml +32 -0
  1247. data/misc/T1549.xml +34 -0
  1248. data/misc/T1550.xml +31 -0
  1249. data/misc/T1552.xml +41 -0
  1250. data/misc/T1553.xml +41 -0
  1251. data/misc/T1554.xml +47 -0
  1252. data/misc/T1555.xml +31 -0
  1253. data/misc/T1556.xml +30 -0
  1254. data/misc/T1557.xml +32 -0
  1255. data/misc/T1558.xml +31 -0
  1256. data/misc/T1559.xml +50 -0
  1257. data/misc/T1560.xml +38 -0
  1258. data/misc/T1561.xml +29 -0
  1259. data/misc/T157.xml +206 -0
  1260. data/misc/T1570.xml +35 -0
  1261. data/misc/T1572.xml +30 -0
  1262. data/misc/T1574.xml +34 -0
  1263. data/misc/T1575.xml +33 -0
  1264. data/misc/T1576.xml +30 -0
  1265. data/misc/T1577.xml +30 -0
  1266. data/misc/T1578.xml +36 -0
  1267. data/misc/T1579.xml +30 -0
  1268. data/misc/T1585.xml +33 -0
  1269. data/misc/T1588.xml +47 -0
  1270. data/misc/T1590.xml +151 -0
  1271. data/misc/T1591.xml +159 -0
  1272. data/misc/T1592.xml +60 -0
  1273. data/misc/T1594.xml +69 -0
  1274. data/misc/T1595.xml +42 -0
  1275. data/misc/T1596.xml +82 -0
  1276. data/misc/T1599.xml +151 -0
  1277. data/misc/T16.xml +33 -0
  1278. data/misc/T160.xml +31 -0
  1279. data/misc/T1600.xml +36 -0
  1280. data/misc/T1601.xml +39 -0
  1281. data/misc/T1602.xml +59 -0
  1282. data/misc/T1606.xml +39 -0
  1283. data/misc/T1607.xml +47 -0
  1284. data/misc/T1609.xml +51 -0
  1285. data/misc/T1610.xml +31 -0
  1286. data/misc/T1611.xml +38 -0
  1287. data/misc/T1612.xml +32 -0
  1288. data/misc/T1617.xml +31 -0
  1289. data/misc/T1619.xml +30 -0
  1290. data/misc/T1620.xml +49 -0
  1291. data/misc/T1621.xml +29 -0
  1292. data/misc/T1622.xml +35 -0
  1293. data/misc/T1626.xml +30 -0
  1294. data/misc/T1627.xml +29 -0
  1295. data/misc/T1629.xml +41 -0
  1296. data/misc/T163.xml +49 -0
  1297. data/misc/T1630.xml +61 -0
  1298. data/misc/T1631.xml +44 -0
  1299. data/misc/T1632.xml +96 -0
  1300. data/misc/T1633.xml +32 -0
  1301. data/misc/T1634.xml +128 -0
  1302. data/misc/T1635.xml +39 -0
  1303. data/misc/T1636.xml +54 -0
  1304. data/misc/T1637.xml +29 -0
  1305. data/misc/T1638.xml +57 -0
  1306. data/misc/T1642.xml +37 -0
  1307. data/misc/T1644.xml +34 -0
  1308. data/misc/T1650.xml +73 -0
  1309. data/misc/T1651.xml +111 -0
  1310. data/misc/T1652.xml +36 -0
  1311. data/misc/T1656.xml +31 -0
  1312. data/misc/T1657.xml +30 -0
  1313. data/misc/T1658.xml +34 -0
  1314. data/misc/T1675.xml +31 -0
  1315. data/misc/T1678.xml +34 -0
  1316. data/misc/T1679.xml +30 -0
  1317. data/misc/T1680.xml +30 -0
  1318. data/misc/T1681.xml +43 -0
  1319. data/misc/T1685.xml +30 -0
  1320. data/misc/T1691.xml +81 -0
  1321. data/misc/T1693.xml +28 -0
  1322. data/misc/T1698.xml +30 -0
  1323. data/misc/T1699.xml +30 -0
  1324. data/misc/T1701.xml +30 -0
  1325. data/misc/T1703.xml +32 -0
  1326. data/misc/T1706.xml +33 -0
  1327. data/misc/T1713.xml +39 -0
  1328. data/misc/T1714.xml +40 -0
  1329. data/misc/T1719.xml +31 -0
  1330. data/misc/T1720.xml +46 -0
  1331. data/misc/T1721.xml +67 -0
  1332. data/misc/T1722.xml +38 -0
  1333. data/misc/T1727.xml +30 -0
  1334. data/misc/T1729.xml +48 -0
  1335. data/misc/T1730.xml +37 -0
  1336. data/misc/T1731.xml +40 -0
  1337. data/misc/T176.xml +70 -0
  1338. data/misc/T181.xml +75 -0
  1339. data/misc/T184.xml +43 -0
  1340. data/misc/T187.xml +79 -0
  1341. data/misc/T188.xml +35 -0
  1342. data/misc/T190.xml +29 -0
  1343. data/misc/T192.xml +30 -0
  1344. data/misc/T195.xml +33 -0
  1345. data/misc/T197.xml +34 -0
  1346. data/misc/T199.xml +31 -0
  1347. data/misc/T2.xml +39 -0
  1348. data/misc/T201.xml +39 -0
  1349. data/misc/T202.xml +66 -0
  1350. data/misc/T208.xml +41 -0
  1351. data/misc/T210.xml +29 -0
  1352. data/misc/T211.xml +161 -0
  1353. data/misc/T214.xml +31 -0
  1354. data/misc/T216.xml +28 -0
  1355. data/misc/T221.xml +74 -0
  1356. data/misc/T226.xml +29 -0
  1357. data/misc/T23.xml +53 -0
  1358. data/misc/T231.xml +42 -0
  1359. data/misc/T235.xml +544 -0
  1360. data/misc/T236.xml +194 -0
  1361. data/misc/T240.xml +46 -0
  1362. data/misc/T241.xml +36 -0
  1363. data/misc/T242.xml +35 -0
  1364. data/misc/T246.xml +86 -0
  1365. data/misc/T248.xml +34 -0
  1366. data/misc/T249.xml +32 -0
  1367. data/misc/T253.xml +33 -0
  1368. data/misc/T256.xml +48 -0
  1369. data/misc/T257.xml +37 -0
  1370. data/misc/T259.xml +48 -0
  1371. data/misc/T261.xml +44 -0
  1372. data/misc/T262.xml +37 -0
  1373. data/misc/T263.xml +48 -0
  1374. data/misc/T271.xml +29 -0
  1375. data/misc/T272.xml +29 -0
  1376. data/misc/T283.xml +31 -0
  1377. data/misc/T284.xml +93 -0
  1378. data/misc/T286.xml +37 -0
  1379. data/misc/T287.xml +30 -0
  1380. data/misc/T288.xml +34 -0
  1381. data/misc/T290.xml +51 -0
  1382. data/misc/T291.xml +30 -0
  1383. data/misc/T292.xml +29 -0
  1384. data/misc/T293.xml +30 -0
  1385. data/misc/T295.xml +36 -0
  1386. data/misc/T3.xml +34 -0
  1387. data/misc/T304.xml +138 -0
  1388. data/misc/T305.xml +50 -0
  1389. data/misc/T306.xml +347 -0
  1390. data/misc/T308.xml +28 -0
  1391. data/misc/T309.xml +209 -0
  1392. data/misc/T311.xml +32 -0
  1393. data/misc/T312.xml +32 -0
  1394. data/misc/T313.xml +37 -0
  1395. data/misc/T321.xml +35 -0
  1396. data/misc/T322.xml +32 -0
  1397. data/misc/T33.xml +34 -0
  1398. data/misc/T331.xml +49 -0
  1399. data/misc/T333.xml +44 -0
  1400. data/misc/T334.xml +30 -0
  1401. data/misc/T335.xml +52 -0
  1402. data/misc/T336.xml +104 -0
  1403. data/misc/T340.xml +153 -0
  1404. data/misc/T344.xml +87 -0
  1405. data/misc/T345.xml +59 -0
  1406. data/misc/T346.xml +111 -0
  1407. data/misc/T349.xml +30 -0
  1408. data/misc/T353.xml +93 -0
  1409. data/misc/T355.xml +831 -0
  1410. data/misc/T363.xml +376 -0
  1411. data/misc/T365.xml +69 -0
  1412. data/misc/T366.xml +265 -0
  1413. data/misc/T368.xml +129 -0
  1414. data/misc/T371.xml +57 -0
  1415. data/misc/T372.xml +29 -0
  1416. data/misc/T374.xml +1283 -0
  1417. data/misc/T375.xml +106 -0
  1418. data/misc/T377.xml +31 -0
  1419. data/misc/T378.xml +39 -0
  1420. data/misc/T379.xml +36 -0
  1421. data/misc/T381.xml +44 -0
  1422. data/misc/T39.xml +35 -0
  1423. data/misc/T392.xml +30 -0
  1424. data/misc/T393.xml +44 -0
  1425. data/misc/T399.xml +32 -0
  1426. data/misc/T40.xml +164 -0
  1427. data/misc/T400.xml +39 -0
  1428. data/misc/T407.xml +31 -0
  1429. data/misc/T412.xml +42 -0
  1430. data/misc/T422.xml +103 -0
  1431. data/misc/T423.xml +34 -0
  1432. data/misc/T426.xml +508 -0
  1433. data/misc/T432.xml +166 -0
  1434. data/misc/T433.xml +31 -0
  1435. data/misc/T436.xml +33 -0
  1436. data/misc/T437.xml +28 -0
  1437. data/misc/T441.xml +61 -0
  1438. data/misc/T444.xml +33 -0
  1439. data/misc/T445.xml +37 -0
  1440. data/misc/T448.xml +43 -0
  1441. data/misc/T455.xml +29 -0
  1442. data/misc/T456.xml +31 -0
  1443. data/misc/T460.xml +40 -0
  1444. data/misc/T461.xml +30 -0
  1445. data/misc/T465.xml +28 -0
  1446. data/misc/T47.xml +29 -0
  1447. data/misc/T473.xml +40 -0
  1448. data/misc/T478.xml +29 -0
  1449. data/misc/T479.xml +288 -0
  1450. data/misc/T48.xml +31 -0
  1451. data/misc/T480.xml +72 -0
  1452. data/misc/T481.xml +30 -0
  1453. data/misc/T482.xml +36 -0
  1454. data/misc/T483.xml +32 -0
  1455. data/misc/T484.xml +32 -0
  1456. data/misc/T485.xml +38 -0
  1457. data/misc/T486.xml +35 -0
  1458. data/misc/T487.xml +33 -0
  1459. data/misc/T491.xml +31 -0
  1460. data/misc/T501.xml +44 -0
  1461. data/misc/T503.xml +30 -0
  1462. data/misc/T506.xml +32 -0
  1463. data/misc/T51.xml +29 -0
  1464. data/misc/T511.xml +36 -0
  1465. data/misc/T512.xml +31 -0
  1466. data/misc/T514.xml +40 -0
  1467. data/misc/T516.xml +31 -0
  1468. data/misc/T519.xml +33 -0
  1469. data/misc/T52.xml +55 -0
  1470. data/misc/T521.xml +84 -0
  1471. data/misc/T522.xml +1767 -0
  1472. data/misc/T529.xml +43 -0
  1473. data/misc/T533.xml +31 -0
  1474. data/misc/T534.xml +34 -0
  1475. data/misc/T535.xml +33 -0
  1476. data/misc/T536.xml +40 -0
  1477. data/misc/T537.xml +29 -0
  1478. data/misc/T538.xml +36 -0
  1479. data/misc/T54.xml +36 -0
  1480. data/misc/T544.xml +29 -0
  1481. data/misc/T545.xml +36 -0
  1482. data/misc/T546.xml +208 -0
  1483. data/misc/T547.xml +47 -0
  1484. data/misc/T548.xml +86 -0
  1485. data/misc/T558.xml +37 -0
  1486. data/misc/T559.xml +218 -0
  1487. data/misc/T56.xml +46 -0
  1488. data/misc/T560.xml +196 -0
  1489. data/misc/T562.xml +74 -0
  1490. data/misc/T563.xml +83 -0
  1491. data/misc/T566.xml +36 -0
  1492. data/misc/T568.xml +34 -0
  1493. data/misc/T569.xml +73 -0
  1494. data/misc/T570.xml +29 -0
  1495. data/misc/T571.xml +29 -0
  1496. data/misc/T572.xml +32 -0
  1497. data/misc/T575.xml +28 -0
  1498. data/misc/T578.xml +45 -0
  1499. data/misc/T579.xml +36 -0
  1500. data/misc/T580.xml +34 -0
  1501. data/misc/T584.xml +117 -0
  1502. data/misc/T585.xml +46 -0
  1503. data/misc/T587.xml +42 -0
  1504. data/misc/T590.xml +30 -0
  1505. data/misc/T591.xml +81 -0
  1506. data/misc/T592.xml +34 -0
  1507. data/misc/T594.xml +50 -0
  1508. data/misc/T595.xml +33 -0
  1509. data/misc/T6.xml +34 -0
  1510. data/misc/T604.xml +30 -0
  1511. data/misc/T605.xml +31 -0
  1512. data/misc/T608.xml +34 -0
  1513. data/misc/T611.xml +52 -0
  1514. data/misc/T612.xml +31 -0
  1515. data/misc/T615.xml +65 -0
  1516. data/misc/T617.xml +51 -0
  1517. data/misc/T618.xml +50 -0
  1518. data/misc/T620.xml +39 -0
  1519. data/misc/T621.xml +39 -0
  1520. data/misc/T623.xml +78 -0
  1521. data/misc/T625.xml +31 -0
  1522. data/misc/T626.xml +50 -0
  1523. data/misc/T627.xml +32 -0
  1524. data/misc/T629.xml +33 -0
  1525. data/misc/T632.xml +38 -0
  1526. data/misc/T635.xml +47 -0
  1527. data/misc/T639.xml +118 -0
  1528. data/misc/T640.xml +553 -0
  1529. data/misc/T641.xml +463 -0
  1530. data/misc/T644.xml +31 -0
  1531. data/misc/T645.xml +29 -0
  1532. data/misc/T647.xml +227 -0
  1533. data/misc/T648.xml +33 -0
  1534. data/misc/T650.xml +109 -0
  1535. data/misc/T653.xml +39 -0
  1536. data/misc/T654.xml +31 -0
  1537. data/misc/T656.xml +29 -0
  1538. data/misc/T659.xml +47 -0
  1539. data/misc/T66.xml +266 -0
  1540. data/misc/T662.xml +32 -0
  1541. data/misc/T665.xml +29 -0
  1542. data/misc/T666.xml +47 -0
  1543. data/misc/T668.xml +53 -0
  1544. data/misc/T669.xml +33 -0
  1545. data/misc/T670.xml +57 -0
  1546. data/misc/T672.xml +35 -0
  1547. data/misc/T673.xml +1123 -0
  1548. data/misc/T674.xml +32 -0
  1549. data/misc/T675.xml +38 -0
  1550. data/misc/T676.xml +31 -0
  1551. data/misc/T678.xml +72 -0
  1552. data/misc/T679.xml +36 -0
  1553. data/misc/T680.xml +48 -0
  1554. data/misc/T681.xml +38 -0
  1555. data/misc/T682.xml +58 -0
  1556. data/misc/T683.xml +32 -0
  1557. data/misc/T687.xml +89 -0
  1558. data/misc/T688.xml +38 -0
  1559. data/misc/T689.xml +44 -0
  1560. data/misc/T692.xml +61 -0
  1561. data/misc/T693.xml +34 -0
  1562. data/misc/T695.xml +39 -0
  1563. data/misc/T698.xml +30 -0
  1564. data/misc/T699.xml +29 -0
  1565. data/misc/T701.xml +118 -0
  1566. data/misc/T703.xml +45 -0
  1567. data/misc/T704.xml +41 -0
  1568. data/misc/T705.xml +30 -0
  1569. data/misc/T706.xml +151 -0
  1570. data/misc/T707.xml +115 -0
  1571. data/misc/T708.xml +125 -0
  1572. data/misc/T709.xml +29 -0
  1573. data/misc/T714.xml +30 -0
  1574. data/misc/T715.xml +34 -0
  1575. data/misc/T716.xml +47 -0
  1576. data/misc/T717.xml +33 -0
  1577. data/misc/T718.xml +50 -0
  1578. data/misc/T72.xml +30 -0
  1579. data/misc/T720.xml +35 -0
  1580. data/misc/T723.xml +44 -0
  1581. data/misc/T726.xml +46 -0
  1582. data/misc/T728.xml +38 -0
  1583. data/misc/T73.xml +30 -0
  1584. data/misc/T731.xml +34 -0
  1585. data/misc/T732.xml +37 -0
  1586. data/misc/T735.xml +277 -0
  1587. data/misc/T736.xml +29 -0
  1588. data/misc/T737.xml +191 -0
  1589. data/misc/T738.xml +1018 -0
  1590. data/misc/T743.xml +31 -0
  1591. data/misc/T744.xml +39 -0
  1592. data/misc/T745.xml +28 -0
  1593. data/misc/T747.xml +30 -0
  1594. data/misc/T748.xml +51 -0
  1595. data/misc/T749.xml +51 -0
  1596. data/misc/T750.xml +263 -0
  1597. data/misc/T752.xml +136 -0
  1598. data/misc/T753.xml +72 -0
  1599. data/misc/T755.xml +560 -0
  1600. data/misc/T756.xml +82 -0
  1601. data/misc/T759.xml +28 -0
  1602. data/misc/T760.xml +28 -0
  1603. data/misc/T762.xml +42 -0
  1604. data/misc/T771.xml +41 -0
  1605. data/misc/T772.xml +30 -0
  1606. data/misc/T78.xml +31 -0
  1607. data/misc/T783.xml +42 -0
  1608. data/misc/T786.xml +44 -0
  1609. data/misc/T789.xml +44 -0
  1610. data/misc/T792.xml +42 -0
  1611. data/misc/T795.xml +36 -0
  1612. data/misc/T797.xml +32 -0
  1613. data/misc/T8.xml +34 -0
  1614. data/misc/T808.xml +46 -0
  1615. data/misc/T811.xml +45 -0
  1616. data/misc/T812.xml +38 -0
  1617. data/misc/T813.xml +39 -0
  1618. data/misc/T814.xml +29 -0
  1619. data/misc/T815.xml +40 -0
  1620. data/misc/T816.xml +37 -0
  1621. data/misc/T820.xml +58 -0
  1622. data/misc/T821.xml +180 -0
  1623. data/misc/T829.xml +48 -0
  1624. data/misc/T83.xml +55 -0
  1625. data/misc/T831.xml +41 -0
  1626. data/misc/T835.xml +28 -0
  1627. data/misc/T836.xml +63 -0
  1628. data/misc/T837.xml +38 -0
  1629. data/misc/T844.xml +30 -0
  1630. data/misc/T845.xml +34 -0
  1631. data/misc/T846.xml +66 -0
  1632. data/misc/T847.xml +35 -0
  1633. data/misc/T848.xml +30 -0
  1634. data/misc/T849.xml +30 -0
  1635. data/misc/T850.xml +39 -0
  1636. data/misc/T852.xml +31 -0
  1637. data/misc/T853.xml +48 -0
  1638. data/misc/T854.xml +47 -0
  1639. data/misc/T855.xml +29 -0
  1640. data/misc/T856.xml +31 -0
  1641. data/misc/T859.xml +69 -0
  1642. data/misc/T868.xml +29 -0
  1643. data/misc/T875.xml +150 -0
  1644. data/misc/T88.xml +48 -0
  1645. data/misc/T883.xml +36 -0
  1646. data/misc/T886.xml +36 -0
  1647. data/misc/T887.xml +42 -0
  1648. data/misc/T888.xml +34 -0
  1649. data/misc/T889.xml +37 -0
  1650. data/misc/T890.xml +43 -0
  1651. data/misc/T891.xml +47 -0
  1652. data/misc/T892.xml +52 -0
  1653. data/misc/T893.xml +29 -0
  1654. data/misc/T894.xml +39 -0
  1655. data/misc/T897.xml +31 -0
  1656. data/misc/T9.xml +50 -0
  1657. data/misc/T90.xml +31 -0
  1658. data/misc/T901.xml +234 -0
  1659. data/misc/T902.xml +31 -0
  1660. data/misc/T903.xml +30 -0
  1661. data/misc/T904.xml +33 -0
  1662. data/misc/T906.xml +31 -0
  1663. data/misc/T91.xml +107 -0
  1664. data/misc/T912.xml +32 -0
  1665. data/misc/T913.xml +43 -0
  1666. data/misc/T92.xml +98 -0
  1667. data/misc/T921.xml +33 -0
  1668. data/misc/T922.xml +33 -0
  1669. data/misc/T923.xml +35 -0
  1670. data/misc/T924.xml +29 -0
  1671. data/misc/T927.xml +29 -0
  1672. data/misc/T934.xml +34 -0
  1673. data/misc/T935.xml +157 -0
  1674. data/misc/T936.xml +86 -0
  1675. data/misc/T937.xml +47 -0
  1676. data/misc/T938.xml +35 -0
  1677. data/misc/T939.xml +29 -0
  1678. data/misc/T940.xml +32 -0
  1679. data/misc/T943.xml +53 -0
  1680. data/misc/T944.xml +43 -0
  1681. data/misc/T945.xml +56 -0
  1682. data/misc/T950.xml +75 -0
  1683. data/misc/T951.xml +36 -0
  1684. data/misc/T952.xml +30 -0
  1685. data/misc/T955.xml +32 -0
  1686. data/misc/T959.xml +29 -0
  1687. data/misc/T960.xml +40 -0
  1688. data/misc/T962.xml +38 -0
  1689. data/misc/T963.xml +129 -0
  1690. data/misc/T964.xml +46 -0
  1691. data/misc/T969.xml +38 -0
  1692. data/misc/T974.xml +28 -0
  1693. data/misc/T976.xml +32 -0
  1694. data/misc/T98.xml +1511 -0
  1695. data/misc/T980.xml +35 -0
  1696. data/misc/T981.xml +46 -0
  1697. data/misc/T982.xml +32 -0
  1698. data/misc/T983.xml +29 -0
  1699. data/misc/T984.xml +30 -0
  1700. data/misc/T985.xml +28 -0
  1701. data/misc/T986.xml +28 -0
  1702. data/misc/T987.xml +36 -0
  1703. data/misc/T988.xml +48 -0
  1704. data/misc/T990.xml +34 -0
  1705. data/misc/T998.xml +30 -0
  1706. data/misc/T999.xml +39 -0
  1707. data/misc/TA.xml +34 -0
  1708. data/misc/TA1.xml +32 -0
  1709. data/misc/TAX.xml +40 -0
  1710. data/misc/TBI.xml +35 -0
  1711. data/misc/TC2.xml +29 -0
  1712. data/misc/TCD.xml +43 -0
  1713. data/misc/TD1.xml +37 -0
  1714. data/misc/TD3.xml +37 -0
  1715. data/misc/TD4.xml +32 -0
  1716. data/misc/TD5.xml +42 -0
  1717. data/misc/TDS.xml +31 -0
  1718. data/misc/TDT.xml +31 -0
  1719. data/misc/TED.xml +35 -0
  1720. data/misc/TEM.xml +32 -0
  1721. data/misc/TER.xml +33 -0
  1722. data/misc/TF.xml +31 -0
  1723. data/misc/TFR.xml +31 -0
  1724. data/misc/TFS.xml +35 -0
  1725. data/misc/THE.xml +32 -0
  1726. data/misc/TI.xml +34 -0
  1727. data/misc/TI01.xml +34 -0
  1728. data/misc/TI03.xml +29 -0
  1729. data/misc/TI05.xml +65 -0
  1730. data/misc/TI10.xml +28 -0
  1731. data/misc/TI11.xml +41 -0
  1732. data/misc/TI13.xml +29 -0
  1733. data/misc/TI14.xml +30 -0
  1734. data/misc/TI40.xml +36 -0
  1735. data/misc/TI43.xml +61 -0
  1736. data/misc/TI58.xml +32 -0
  1737. data/misc/TI60.xml +29 -0
  1738. data/misc/TI61.xml +30 -0
  1739. data/misc/TI62.xml +30 -0
  1740. data/misc/TI63.xml +33 -0
  1741. data/misc/TIA.xml +34 -0
  1742. data/misc/TID.xml +36 -0
  1743. data/misc/TII.xml +32 -0
  1744. data/misc/TIS.xml +31 -0
  1745. data/misc/TLN.xml +49 -0
  1746. data/misc/TMD.xml +36 -0
  1747. data/misc/TOA.xml +32 -0
  1748. data/misc/TOO.xml +30 -0
  1749. data/misc/TOV.xml +33 -0
  1750. data/misc/TPB.xml +31 -0
  1751. data/misc/TPD.xml +31 -0
  1752. data/misc/TRF.xml +32 -0
  1753. data/misc/TRL.xml +32 -0
  1754. data/misc/TRN.xml +31 -0
  1755. data/misc/TRS.xml +32 -0
  1756. data/misc/TS.xml +34 -0
  1757. data/misc/TS2.xml +46 -0
  1758. data/misc/TS3.xml +51 -0
  1759. data/misc/TSD.xml +29 -0
  1760. data/misc/TSI.xml +31 -0
  1761. data/misc/TSP.xml +31 -0
  1762. data/misc/TST.xml +44 -0
  1763. data/misc/TSU.xml +35 -0
  1764. data/misc/TT.xml +29 -0
  1765. data/misc/TUD.xml +30 -0
  1766. data/misc/TXI.xml +37 -0
  1767. data/misc/TXN.xml +37 -0
  1768. data/misc/TXP.xml +37 -0
  1769. data/misc/UC.xml +31 -0
  1770. data/misc/UCS.xml +35 -0
  1771. data/misc/UD.xml +44 -0
  1772. data/misc/UDA.xml +34 -0
  1773. data/misc/UIT.xml +30 -0
  1774. data/misc/UM.xml +37 -0
  1775. data/misc/UQS.xml +31 -0
  1776. data/misc/UR.xml +29 -0
  1777. data/misc/USD.xml +39 -0
  1778. data/misc/USI.xml +30 -0
  1779. data/misc/UWI.xml +31 -0
  1780. data/misc/V1.xml +36 -0
  1781. data/misc/V2.xml +44 -0
  1782. data/misc/V3.xml +31 -0
  1783. data/misc/V4.xml +28 -0
  1784. data/misc/V5.xml +30 -0
  1785. data/misc/V9.xml +47 -0
  1786. data/misc/VAD.xml +38 -0
  1787. data/misc/VAR.xml +34 -0
  1788. data/misc/VAT.xml +39 -0
  1789. data/misc/VC.xml +40 -0
  1790. data/misc/VC1.xml +42 -0
  1791. data/misc/VDI.xml +42 -0
  1792. data/misc/VEH.xml +43 -0
  1793. data/misc/VID.xml +40 -0
  1794. data/misc/VR.xml +36 -0
  1795. data/misc/VRC.xml +32 -0
  1796. data/misc/W01.xml +43 -0
  1797. data/misc/W03.xml +34 -0
  1798. data/misc/W04.xml +42 -0
  1799. data/misc/W05.xml +35 -0
  1800. data/misc/W06.xml +39 -0
  1801. data/misc/W07.xml +38 -0
  1802. data/misc/W08.xml +36 -0
  1803. data/misc/W09.xml +36 -0
  1804. data/misc/W1.xml +28 -0
  1805. data/misc/W10.xml +36 -0
  1806. data/misc/W12.xml +49 -0
  1807. data/misc/W13.xml +32 -0
  1808. data/misc/W14.xml +32 -0
  1809. data/misc/W15.xml +33 -0
  1810. data/misc/W17.xml +36 -0
  1811. data/misc/W18.xml +30 -0
  1812. data/misc/W19.xml +45 -0
  1813. data/misc/W2.xml +43 -0
  1814. data/misc/W20.xml +37 -0
  1815. data/misc/W27.xml +37 -0
  1816. data/misc/W28.xml +35 -0
  1817. data/misc/W3.xml +33 -0
  1818. data/misc/W4.xml +32 -0
  1819. data/misc/W5.xml +33 -0
  1820. data/misc/W6.xml +31 -0
  1821. data/misc/W66.xml +37 -0
  1822. data/misc/W76.xml +33 -0
  1823. data/misc/WLD.xml +37 -0
  1824. data/misc/WS.xml +30 -0
  1825. data/misc/X01.xml +37 -0
  1826. data/misc/X02.xml +32 -0
  1827. data/misc/X1.xml +44 -0
  1828. data/misc/X2.xml +33 -0
  1829. data/misc/X4.xml +46 -0
  1830. data/misc/X7.xml +29 -0
  1831. data/misc/XD.xml +32 -0
  1832. data/misc/XH.xml +34 -0
  1833. data/misc/XPO.xml +31 -0
  1834. data/misc/XQ.xml +32 -0
  1835. data/misc/Y1.xml +36 -0
  1836. data/misc/Y2.xml +37 -0
  1837. data/misc/Y3.xml +38 -0
  1838. data/misc/Y4.xml +37 -0
  1839. data/misc/Y5.xml +28 -0
  1840. data/misc/Y6.xml +30 -0
  1841. data/misc/Y7.xml +32 -0
  1842. data/misc/YNQ.xml +37 -0
  1843. data/misc/ZA.xml +35 -0
  1844. data/misc/ZC1.xml +36 -0
  1845. data/misc/ZD.xml +36 -0
  1846. data/misc/ZR.xml +43 -0
  1847. data/misc/ZT.xml +33 -0
  1848. data/misc/rdoc_template.rb +697 -0
  1849. data/test/tc_factory_270.rb +170 -0
  1850. data/test/tc_factory_270interchange.rb +306 -0
  1851. data/test/tc_factory_271.rb +235 -0
  1852. data/test/tc_factory_276.rb +42 -0
  1853. data/test/tc_factory_277.rb +43 -0
  1854. data/test/tc_factory_834.rb +265 -0
  1855. data/test/tc_factory_837p.rb +285 -0
  1856. data/test/tc_factory_997.rb +138 -0
  1857. data/test/tc_factory_999.rb +128 -0
  1858. data/test/tc_parse_270.rb +98 -0
  1859. data/test/tc_parse_270interchange.rb +184 -0
  1860. data/test/tc_parse_271.rb +158 -0
  1861. data/test/tc_parse_276.rb +151 -0
  1862. data/test/tc_parse_277.rb +128 -0
  1863. data/test/tc_parse_834.rb +49 -0
  1864. data/test/tc_parse_835.rb +215 -0
  1865. data/test/tc_parse_837p.rb +82 -0
  1866. data/test/tc_parse_997.rb +147 -0
  1867. data/test/tc_parse_999.rb +89 -0
  1868. data/x12.gemspec +21 -0
  1869. metadata +1946 -0
@@ -0,0 +1,37 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Class implementing a composite field.
28
+ #
29
+
30
+ class Composite < Base
31
+
32
+ # Make a printable representation of the composite
33
+ def inspect
34
+ "Composite "+super.inspect
35
+ end
36
+ end
37
+ end
data/lib/x12/empty.rb ADDED
@@ -0,0 +1,43 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Class indicating the absence of any X12 element, be it loop, segment, or anything else like that.
28
+ #
29
+
30
+ class Empty < Base
31
+
32
+ # Create a new empty
33
+ def initialize
34
+ super(nil, [])
35
+ end
36
+
37
+ # Returns an empty string
38
+ def to_s
39
+ ''
40
+ end
41
+
42
+ end # Empty
43
+ end # X12
data/lib/x12/field.rb ADDED
@@ -0,0 +1,94 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Class to represent a segment field. Please note, it's not a descendant of Base.
28
+ #
29
+
30
+ class Field
31
+ attr_reader :name, :type, :required, :min_length, :max_length, :validation
32
+ attr_writer :content
33
+
34
+ # Create a new field with given parameters
35
+ def initialize(name, type, required, min_length, max_length, validation)
36
+ @name = name
37
+ @type = type
38
+ @required = required
39
+ @min_length = min_length.to_i
40
+ @max_length = max_length.to_i
41
+ @validation = validation
42
+ @content = nil
43
+ end
44
+
45
+ # Returns printable string with field's content
46
+ def inspect
47
+ "Field #{name}|#{type}|#{required}|#{min_length}-#{max_length}|#{validation} <#{@content}>"
48
+ end
49
+
50
+ # Synonym for 'render'
51
+ def to_s
52
+ render
53
+ end
54
+
55
+ def render
56
+ unless @content
57
+ @content = $1 if self.type =~ /"(.*)"/ # If it's a constant
58
+ end
59
+ rendered = @content || ''
60
+ rendered = rendered.ljust(@min_length) if @required
61
+ rendered
62
+ end # render
63
+
64
+ # Check if it's been set yet and it's not a constant
65
+ def has_content?
66
+ !@content.nil? && ('"'+@content+'"' != self.type)
67
+ end
68
+
69
+ # Erase the content
70
+ def set_empty!
71
+ @content = nil
72
+ end
73
+
74
+ # Returns simplified string regexp for this field, takes field separator and segment separator as arguments
75
+ def simple_regexp(field_sep, segment_sep)
76
+ case self.type
77
+ when /"(.*)"/ then $1
78
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
79
+ end # case
80
+ end # simple_regexp
81
+
82
+ # Returns proper validating string regexp for this field, takes field separator and segment separator as arguments
83
+ def proper_regexp(field_sep, segment_sep)
84
+ case self.type
85
+ when 'I' then "\\d{#{@min_length},#{@max_length}}"
86
+ when 'S' then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
87
+ when /C.*/ then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
88
+ when /"(.*)"/ then $1
89
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
90
+ end # case
91
+ end # str_regexp
92
+
93
+ end
94
+ end
data/lib/x12/loop.rb ADDED
@@ -0,0 +1,96 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Implements nested loops of segments
28
+
29
+ class Loop < Base
30
+
31
+ # def regexp
32
+ # @regexp ||=
33
+ # Regexp.new(inject(''){|s, i|
34
+ # puts i.class
35
+ # s += case i
36
+ # when X12::Segment: "(#{i.regexp.source}){#{i.repeats.begin},#{i.repeats.end}}"
37
+ # when X12::Loop: "(.*?)"
38
+ # else
39
+ # ''
40
+ # end
41
+ # })
42
+ # end
43
+
44
+ # Parse a string and fill out internal structures with the pieces of it. Returns
45
+ # an unparsed portion of the string or the original string if nothing was parsed out.
46
+ def parse_helper(str, yield_loop_name, block)
47
+ # puts "#{$count}: parse for #{name}" if name == yield_loop_name
48
+ $count ||=0
49
+ # $count+=1 if name == yield_loop_name
50
+ # return nil if name == yield_loop_name && (($count+=1) > 2)
51
+ #puts "Parsing loop #{name}: "+str
52
+ current_location = str
53
+ nodes.each{|node|
54
+ match_location = node.parse(current_location, yield_loop_name, block)
55
+ current_location = match_location if match_location
56
+ }
57
+ if str == current_location
58
+ return nil
59
+ else
60
+ self.parsed_str = str[0..-current_location.length-1]
61
+ block.call(self) if yield_loop_name && name == yield_loop_name
62
+ return current_location
63
+ end
64
+ end # parse
65
+
66
+ # Render all components of this loop as string suitable for EDI
67
+ def render
68
+ if self.has_content?
69
+ self.to_a.inject(''){|loop_str, i|
70
+ loop_str += i.nodes.inject(''){|nodes_str, j|
71
+ nodes_str += j.render
72
+ }
73
+ }
74
+ else
75
+ ''
76
+ end
77
+ end # render
78
+
79
+
80
+ # Formats a printable string containing the loops element's content
81
+ # added to provide compatability with ruby > 2.0.0
82
+ def inspect
83
+ "#{self.class.to_s.sub(/^.*::/, '')} (#{name}) #{repeats} =<#{parsed_str}, #{next_repeat.inspect}> ".gsub(/\\*\"/, '"')
84
+ end
85
+
86
+
87
+ # Provides looping through repeats of a message
88
+ def each
89
+ res = self.to_a
90
+ 0.upto(res.length - 1) do |x|
91
+ yield res[x]
92
+ end
93
+ end
94
+
95
+ end # Loop
96
+ end # X12
data/lib/x12/parser.rb ADDED
@@ -0,0 +1,133 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+
25
+
26
+ module X12
27
+
28
+ # $Id: Parser.rb 89 2009-05-13 19:36:20Z ikk $
29
+ #
30
+ # Main class for creating X12 parsers and factories.
31
+
32
+ class Parser
33
+
34
+ # These constitute prohibited file names under Microsoft
35
+ MS_DEVICES = ['CON', 'PRN', 'AUX', 'CLOCK$', 'NUL', 'COM1', 'LPT1', 'LPT2', 'LPT3', 'COM2', 'COM3', 'COM4']
36
+
37
+ # Creates a parser out of a definition
38
+ def initialize(file_name)
39
+ save_definition = @x12_definition
40
+ $count = 0
41
+
42
+ # Deal with Microsoft devices
43
+ # get the current working directory
44
+ base_name = File.basename(file_name, '.xml')
45
+ if MS_DEVICES.find{|i| i == base_name}
46
+ file_name = File.join(File.dirname, "#{base_name}_.xml")
47
+ end
48
+ file_location = File.join(File.dirname(__FILE__), "../../misc", file_name)
49
+
50
+ # Read and parse the definition
51
+ str = File.open(file_location, 'r').read
52
+ #@dir_name = File.dirname(File.expand_path(file_name)) # to look up other files if needed
53
+ @x12_definition = X12::XMLDefinitions.new(str)
54
+
55
+ # Populate fields in all segments found in all the loops
56
+ @x12_definition[X12::Loop].each_pair{|k, v|
57
+ #puts "Populating definitions for loop #{k}"
58
+ process_loop(v)
59
+ } if @x12_definition[X12::Loop]
60
+
61
+ # Merge the newly parsed definition into a saved one, if any.
62
+ if save_definition
63
+ @x12_definition.keys.each{|t|
64
+ save_definition[t] ||= {}
65
+ @x12_definition[t].keys.each{|u|
66
+ save_definition[t][u] = @x12_definition[t][u]
67
+ }
68
+ @x12_definition = save_definition
69
+ }
70
+ end
71
+
72
+ #puts PP.pp(self, '')
73
+ end # initialize
74
+
75
+ # Parse a loop of a given name out of a string. Throws an exception if the loop name is not defined.
76
+ def parse(loop_name, str, yield_loop_name=nil, &block)
77
+ raise "Must provide a block if you specify a yield_loop_name" if yield_loop_name && !block
78
+ loop = @x12_definition[X12::Loop][loop_name]
79
+ #puts "Loops to parse #{@x12_definition[X12::Loop].keys}"
80
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
81
+ loop = loop.dup
82
+ loop.parse(str, yield_loop_name, block)
83
+ return loop
84
+ end # parse
85
+
86
+ # Make an empty loop to be filled out with information
87
+ def factory(loop_name)
88
+ loop = @x12_definition[X12::Loop][loop_name]
89
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
90
+ loop = loop.dup
91
+ return loop
92
+ end # factory
93
+
94
+ private
95
+
96
+ # Recursively scan the loop and instantiate fields' definitions for all its
97
+ # segments
98
+ def process_loop(loop)
99
+ loop.nodes.each{|i|
100
+ case i
101
+ when X12::Loop then process_loop(i)
102
+ when X12::Segment then process_segment(i) unless i.nodes.size > 0
103
+ else return
104
+ end
105
+ }
106
+ end
107
+
108
+ # Instantiate segment's fields as previously defined
109
+ def process_segment(segment)
110
+ #puts "Trying to process segment #{segment.inspect}"
111
+ unless @x12_definition[X12::Segment] && @x12_definition[X12::Segment][segment.name]
112
+ # Try to find it in a separate file if missing from the @x12_definition structure
113
+ initialize(segment.name+'.xml')
114
+ segment_definition = @x12_definition[X12::Segment][segment.name]
115
+ throw Exception.new("Cannot find a definition for segment #{segment.name}") unless segment_definition
116
+ else
117
+ segment_definition = @x12_definition[X12::Segment][segment.name]
118
+ end
119
+ segment_definition.nodes.each_index{|i|
120
+ segment.nodes[i] = segment_definition.nodes[i]
121
+ # Make sure we have the validation table if any for this field. Try to read one in if missing.
122
+ table = segment.nodes[i].validation
123
+ if table
124
+ unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
125
+ initialize(table+'.xml')
126
+ throw Exception.new("Cannot find a definition for table #{table}") unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
127
+ end
128
+ end
129
+ }
130
+ end
131
+
132
+ end # Parser
133
+ end
@@ -0,0 +1,114 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Implements a segment containing fields or composites
28
+ #
29
+
30
+ class Segment < Base
31
+
32
+ # Parses this segment out of a string, puts the match into value, returns the rest of the string - nil
33
+ # if cannot parse
34
+ def parse_helper(str, yield_loop_name, block)
35
+ s = str
36
+ # puts "Parsing segment #{name} from #{s[0..10]} with regexp [#{regexp.source}]"
37
+ quick_match = s.start_with?("#{name}#{field_separator}")
38
+ puts "#{name} #{s[0..10]} with regexp [#{regexp.source}] matched #{quick_match ? s[0..10] : 'nothing'}"
39
+
40
+ return nil unless quick_match
41
+ m = regexp.match(s)
42
+ s = m.post_match
43
+ self.parsed_str = m[0]
44
+ #puts "Parsed segment "+self.inspect
45
+ return s
46
+ end # parse
47
+
48
+
49
+ # Render all components of this segment as string suitable for EDI
50
+ def render
51
+ self.to_a.inject(''){|repeat_str, i|
52
+ if i.repeats.begin < 1 and !i.has_content?
53
+ # Skip optional empty segments
54
+ repeat_str
55
+ else
56
+ # Have to render no matter how empty
57
+ repeat_str += i.name+i.nodes.reverse.inject(''){|nodes_str, j|
58
+ field = j.render
59
+ (j.required or nodes_str != '' or field != '') ? field_separator+field+nodes_str : nodes_str
60
+ } + segment_separator
61
+ end
62
+ }
63
+ end # render
64
+
65
+ # Returns a regexp that matches this particular segment
66
+ def regexp
67
+ unless @regexp
68
+ if self.nodes.find{|i| i.type =~ /^".+"$/ }
69
+ # It's a very special regexp if there are constant fields
70
+ re_str = self.nodes.inject("^#{name}#{Regexp.escape(field_separator)}"){|s, i|
71
+ field_re = i.simple_regexp(field_separator, segment_separator)+Regexp.escape(field_separator)+'?'
72
+ field_re = "(#{field_re})?" unless i.required
73
+ s+field_re
74
+ } + Regexp.escape(segment_separator)
75
+ @regexp = Regexp.new(re_str)
76
+ else
77
+ # Simple match
78
+ @regexp = Regexp.new("^#{name}#{Regexp.escape(field_separator)}[^#{Regexp.escape(segment_separator)}]*#{Regexp.escape(segment_separator)}")
79
+ end
80
+ #puts sprintf("%s %p", name, @regexp)
81
+ end
82
+ @regexp
83
+ end
84
+
85
+ # Finds a field in the segment. Returns EMPTY if not found.
86
+ def find_field(str)
87
+ #puts "Finding field [#{str}] in #{self.class} #{name}"
88
+ # If there is such a field to begin with
89
+ field_num = nil
90
+ self.nodes.each_index{|i|
91
+ field_num = i if str == self.nodes[i].name
92
+ }
93
+ return EMPTY if field_num.nil?
94
+ #puts field_num
95
+
96
+ # Parse the segment if not parsed already
97
+ unless @fields
98
+ @fields = self.to_s.chop.split(Regexp.new(Regexp.escape(field_separator)))
99
+ self.nodes.each_index{|i| self.nodes[i].content = @fields[i+1] }
100
+ end
101
+ #puts self.nodes[field_num].inspect
102
+ return self.nodes[field_num]
103
+ end
104
+
105
+ # provides looping through multiple segments within the loop
106
+ def each
107
+ res = self.to_a
108
+ 0.upto(res.length - 1) do |x|
109
+ yield res[x]
110
+ end
111
+ end
112
+
113
+ end # Segment
114
+ end # X12