diff --git a/.gitignore b/.gitignore index 3498c31..1326359 100644 --- a/.gitignore +++ b/.gitignore @@ -134,10 +134,12 @@ ttylog *.xml pacs_008_001_08/ -pacs/ -head/ -camt/ -pain/ -pyiso20022/ +pyiso20022/pacs/ +pyiso20022/head/ +pyiso20022/camt/ +pyiso20022/pain/ +pyiso20022/*.py temp/ + +*.xlsx \ No newline at end of file diff --git a/README.md b/README.md index 72e80cd..deb2b99 100644 --- a/README.md +++ b/README.md @@ -296,10 +296,31 @@ with open("my_pacs_008_from_code.xml", "w") as xml_file: ``` -### Message types? -Currently supports PACS, PAIN and CAMT messages as well as HEAD (header documents for the messages). +## Convert a CAMT.053 into an Excel file? +You can convert the entries in a CAMT.053 into a Excel file using the tools in pyiso20022. -### Source of truth? +Currently this will extract the `Ntry` list and take all details and place them into seperate columns. It will also translate the element names into their more meaningful English versions. + +Use it like this: + +```python +import pyiso20022.tools as isotools + +isotools.camt053_to_excel("my_camt053_file.xml", + "my_camt053_excel_file.xlsx") +``` + +And you'll get something like this when you open your Excel file: + + + + + +## Message types? +Currently pyiso20022 supports PACS, PAIN and CAMT messages as well as HEAD (header documents for the messages). + + +## Source of truth? If you want the original source of truth for all things ISO 20022 schema related then check out [www.iso20022.org](https://www.iso20022.org/) diff --git a/build_classes_from_xsds.bsh b/build_classes_from_xsds.bsh index e2b5cf4..dd7d27c 100755 --- a/build_classes_from_xsds.bsh +++ b/build_classes_from_xsds.bsh @@ -16,7 +16,14 @@ generate_xsdata() { done } -rm -rf pyiso20022/ +REMOVE_DIRS=("pacs" "head" "pain" "camt") + +for a_dir in "${REMOVE_DIRS[@]}" +do + rm -rf "pyiso20022/${a_dir}" +done + + echo "# Supported message types" > supported_msg_types.md generate_xsdata "pacs" "xsd/payments_clearing_and_settlement" @@ -26,3 +33,4 @@ generate_xsdata "camt" "xsd/cash_management" wait cat supported_msg_types.md | sort -n | uniq > supported_msg_types_final.md rm supported_msg_types.md + diff --git a/build_requirements.txt b/build_requirements.txt index 706d5c0..0d3cf07 100644 --- a/build_requirements.txt +++ b/build_requirements.txt @@ -3,3 +3,5 @@ setuptools wheel twine xsdata[cli,lxml,soap] +pandas +openpyxl \ No newline at end of file diff --git a/docs/pyiso20022_tools_camt053_excel.png b/docs/pyiso20022_tools_camt053_excel.png new file mode 100644 index 0000000..f3bf19c Binary files /dev/null and b/docs/pyiso20022_tools_camt053_excel.png differ diff --git a/example_files/pacs/gen_pacs008.py b/example_files/pacs/gen_pacs008.py new file mode 100644 index 0000000..ff08a92 --- /dev/null +++ b/example_files/pacs/gen_pacs008.py @@ -0,0 +1,122 @@ +from pyiso20022.pacs.pacs_008_001_08 import * +import pyiso20022.head.head_001_001_02 as hd +from xsdata.formats.dataclass.serializers import XmlSerializer +from xsdata.formats.dataclass.serializers.config import SerializerConfig +import uuid +from lxml import etree +from xsdata.models.datatype import XmlDateTime + + +clr_sys = ClearingSystemIdentification3Choice(cd="STG") +the_sttlinf = SettlementInstruction7(sttlm_mtd=SettlementMethod1Code("CLRG"), + clr_sys=clr_sys) + +# Create the Group Header +grp_header = GroupHeader93(msg_id="MIDTheMessageId", + nb_of_txs=1, + cre_dt_tm=XmlDateTime.from_string("2019-01-01T00:00:00"), + sttlm_inf=the_sttlinf) + + +pmt_id = PaymentIdentification7(instr_id="IXWEDRFTGHJK5", + end_to_end_id="E2EDRFGHJK7", + tx_id="TIDRFGHJ54678", + uetr=str(uuid.uuid4())) + + +zero_amt = ActiveOrHistoricCurrencyAndAmount(ccy="GBP", value=0) + +bic_1 = FinancialInstitutionIdentification18("BARCGB22") +bic_2 = FinancialInstitutionIdentification18("VODAGB23") + +agt = BranchAndFinancialInstitutionIdentification6(fin_instn_id=bic_1) + +instd_agt = BranchAndFinancialInstitutionIdentification6(fin_instn_id=bic_2) +instg_agt = BranchAndFinancialInstitutionIdentification6(fin_instn_id=bic_1) + +chrgs_inf = Charges7(amt=zero_amt, agt=agt) + +ult_pstl = PostalAddress24(bldg_nm="10", + strt_nm="Cheapside", + twn_nm="London", + ctry="GB") +dbtr_pstl = PostalAddress24(bldg_nm="11", + strt_nm="Farside", + twn_nm="York", + ctry="GB") +ult_debtr = PartyIdentification135(nm="Mr Ulti Debtor", + pstl_adr=ult_pstl) +initg_pty = PartyIdentification135(nm="Ms Initd Party", + pstl_adr=ult_pstl) +reg_debtr = PartyIdentification135(nm="Mrs Reg Debtor", + pstl_adr=dbtr_pstl) +instr_for_nxt_agt = InstructionForNextAgent1(instr_inf="HOLD") +instd_amt = ActiveOrHistoricCurrencyAndAmount(ccy="GBP", value=555.01) +intra_bk_st_amt = ActiveCurrencyAndAmount(ccy="GBP", value=555.01) + +purp = Purpose2Choice(cd="PHON") +rem_loc = RemittanceLocation7(rmt_id="BUSINESS DEBIT") +rmt_inf = RemittanceInformation16(ustrd=["INVOICE 123456"]) +cdtrtx = CreditTransferTransaction39(pmt_id=pmt_id, + chrg_br=ChargeBearerType1Code("SHAR"), + intr_bk_sttlm_dt="2019-01-01", + intr_bk_sttlm_amt=intra_bk_st_amt, + instd_amt=instd_amt, + chrgs_inf=[chrgs_inf], + instg_agt=instg_agt, + instd_agt=instd_agt, + ultmt_dbtr=ult_debtr, + initg_pty=initg_pty, + dbtr=reg_debtr, + dbtr_agt=instg_agt, + cdtr_agt=instd_agt, + instr_for_nxt_agt=[instr_for_nxt_agt], + purp=purp, + rltd_rmt_inf=[rem_loc], + rmt_inf=rmt_inf) + + +f2f_cust_cred_trans = FitoFicustomerCreditTransferV08(grp_hdr=grp_header, + cdt_trf_tx_inf=[cdtrtx]) + +doc = Document(fito_ficstmr_cdt_trf=f2f_cust_cred_trans) + +# Create the AppHdr +fr_fiid = hd.FinancialInstitutionIdentification18(bicfi="BARCGB22") +fr_bafii = hd.BranchAndFinancialInstitutionIdentification6(fin_instn_id=fr_fiid) +fr_party44 = hd.Party44Choice(fiid=fr_bafii) + +to_fiid = hd.FinancialInstitutionIdentification18(bicfi="BARCGB22") +to_bafii = hd.BranchAndFinancialInstitutionIdentification6(fin_instn_id=to_fiid) +to_party44 = hd.Party44Choice(fiid=to_bafii) + +header = hd.AppHdr(fr=fr_party44, + to=to_party44, + biz_msg_idr="MIDRFGHJKL", + msg_def_idr="pacs.008.001.08", + biz_svc="boe.chaps.enh.01", + cre_dt="2019-01-01T00:00:00", + prty="NORM") + +config_subs = SerializerConfig(pretty_print=True, xml_declaration=False) +serializer_subs = XmlSerializer(config=config_subs) + +ns_map_header: dict[None, str] = { + None: "urn:iso:std:iso:20022:tech:xsd:head.001.001.02" +} +ns_map_doc: dict[None, str] = { + None: "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08" +} + +header_el: str = serializer_subs.render(header, ns_map=ns_map_header) +doc_el: str = serializer_subs.render(doc, ns_map=ns_map_doc) + +msg_root = etree.Element('MSGRoot') +msg_root.append(etree.fromstring(header_el)) +msg_root.append(etree.fromstring(doc_el)) + +msg_full = etree.tostring(msg_root, pretty_print=True, + xml_declaration=True, encoding='UTF-8') + +with open("my_pacs_008_from_code.xml", "w") as xml_file: + xml_file.write(str(msg_full, encoding='utf-8')) diff --git a/make_xlsx.py b/make_xlsx.py new file mode 100644 index 0000000..7cf0047 --- /dev/null +++ b/make_xlsx.py @@ -0,0 +1,7 @@ +import pyiso20022.tools as isotools + +isotools.camt053_to_excel("example_files/gs_camt/camt053_001_02.xml", + "camt053_excel.xlsx") + +hed = isotools.camt053_to_df("example_files/gs_camt/camt053_001_02.xml").head() +print(hed) diff --git a/pyiso20022/tools/__init__.py b/pyiso20022/tools/__init__.py new file mode 100644 index 0000000..df57bf9 --- /dev/null +++ b/pyiso20022/tools/__init__.py @@ -0,0 +1,4 @@ +from pyiso20022.tools.camt053_extract import camt053_to_excel +from pyiso20022.tools.camt053_extract import camt053_to_df + +__all__ = [camt053_to_excel, camt053_to_df] diff --git a/pyiso20022/tools/camt053_extract.py b/pyiso20022/tools/camt053_extract.py new file mode 100644 index 0000000..93c1ca2 --- /dev/null +++ b/pyiso20022/tools/camt053_extract.py @@ -0,0 +1,2920 @@ +from lxml import etree +import re +import pandas as pd + + +mnemonics = { + 'Abbrvtd': 'Abbreviated', + 'Ablty': 'Ability', + 'Abnrml': 'Abnormal', + 'Abrt': 'Abort', + 'Abov': 'Above', + 'Abs': 'Absolute', + 'Abstn': 'Abstain', + 'Acclrtn': 'Acceleration', + 'Accpt': 'Accept', + 'Accptbl': 'Acceptable', + 'Accptnc': 'Acceptance', + 'Accptd': 'Accepted', + 'Accptr': 'Acceptor', + 'Accs': 'Access', + 'Accsd': 'Accessed', + 'Acct': 'Account', + 'Acctg': 'Accounting', + 'Accts': 'Accounts', + 'Acrl': 'Accrual', + 'Acrd': 'Accrued', + 'Acmltd': 'Accumulated', + 'Acmltn': 'Accumulation', + 'Ackd': 'Acknowledged', + 'Ack': 'Acknowledgement', + 'Acqr': 'Acquire', + 'Acqrr': 'Acquirer', + 'Acqrg': 'Acquiring', + 'Acqstn': 'Acquisition', + 'Acrnm': 'Acronym', + 'Act': 'Act', + 'Actn': 'Action', + 'Actns': 'Actions', + 'Actvt': 'Activate', + 'Actvtd': 'Activated', + 'Actvtn': 'Activation', + 'Actv': 'Active', + 'Actvty': 'Activity', + 'Actl': 'Actual', + 'Ad': 'Ad', + 'Adptr': 'Adapter', + 'Add': 'Add', + 'Added': 'Added', + 'Adddm': 'Addendum', + 'Addtn': 'Addition', + 'Addtl': 'Additional', + 'Adr': 'Address', + 'Adrs': 'Addresses', + 'Adqcy': 'Adequacy', + 'Adjdctn': 'Adjudication', + 'Adjst': 'Adjust', + 'Adjstd': 'Adjusted', + 'Adjstmnt': 'Adjustment', + 'Admstn': 'Administration', + 'Admstv': 'Administrative', + 'Admstr': 'Administrator', + 'Admssn': 'Admission', + 'Admt': 'Admit', + 'Admttnc': 'Admittance', + 'Adlts': 'Adults', + 'Advnc': 'Advance', + 'Advncd': 'Advanced', + 'Advntg': 'Advantage', + 'Advc': 'Advice', + 'Advsd': 'Advised', + 'Advsg': 'Advising', + 'Advsr': 'Advisor', + 'Afctd': 'Affected', + 'Afflt': 'Affiliate', + 'Affltd': 'Affiliated', + 'Affltn': 'Affiliation', + 'Affirm': 'Affirmation', + 'Affrmd': 'Affirmed', + 'Affrmg': 'Affirming', + 'Aftr': 'After', + 'Agnst': 'Against', + 'Age': 'Age', + 'Agcy': 'Agency', + 'Agnd': 'Agenda', + 'Agt': 'Agent', + 'Agts': 'Agents', + 'Aggt': 'Aggregate', + 'Aggtd': 'Aggregated', + 'Aggtn': 'Aggregation', + 'Aggrssv': 'Aggressive', + 'Agr': 'Agree', + 'Agrd': 'Agreed', + 'Agrmt': 'Agreement', + 'Agrmts': 'Agreements', + 'Agrcltrl': 'Agricultural', + 'Air': 'Air', + 'Airprt': 'Airport', + 'Aktngwn': 'Aktiengewinn', + 'Alrt': 'Alert', + 'Algo': 'Algorithm', + 'Aln': 'Alien', + 'All': 'All', + 'Allgd': 'Alleged', + 'Allgmt': 'Allegement', + 'Allctd': 'Allocated', + 'Allcn': 'Allocation', + 'Allcns': 'Allocations', + 'Alltd': 'Alloted', + 'Alltmt': 'Allotment', + 'Allwbl': 'Allowable', + 'Allwnc': 'Allowance', + 'Allwncs': 'Allowances', + 'Allwd': 'Allowed', + 'Alone': 'Alone', + 'Along': 'Along', + 'Alpha': 'Alpha', + 'Alrdy': 'Already', + 'Altrn': 'Alternate', + 'Altrntv': 'Alternative', + 'Amd': 'Amend', + 'Amdd': 'Amended', + 'Amdmnt': 'Amendment', + 'Amnty': 'Amenity', + 'Amrcn': 'American', + 'AMF': 'AMF', + 'Ammn': 'Ammonia', + 'Ammnm': 'Ammonium', + 'Amtsbl': 'Amortisable', + 'Amtstn': 'Amortisation', + 'Amtsd': 'Amortised', + 'Amtsg': 'Amortising', + 'Amt': 'Amount', + 'Amts': 'Amounts', + 'Anlys': 'Analysis', + 'Ancllry': 'Ancillary', + 'And': 'And', + 'Anx': 'Annex', + 'Anncd': 'Announced', + 'Anncmnt': 'Announcement', + 'Anl': 'Annual', + 'Anlsd': 'Annualised', + 'Anmty': 'Anonymity', + 'Ante': 'Ante', + 'Antcptd': 'Anticipated', + 'AML': 'AntiMoneyLaundering', + 'Any': 'Any', + 'APDU': 'APDU', + 'API': 'API', + 'Apprnc': 'Appearance', + 'Aplbl': 'Applicable', + 'Applcnt': 'Applicant', + 'Appl': 'Application', + 'Apld': 'Applied', + 'Apls': 'Applies', + 'Apply': 'Apply', + 'Appntd': 'Appointed', + 'Appntmnt': 'Appointment', + 'Apprsl': 'Appraisal', + 'Apprch': 'Approach', + 'Apprprtnss': 'Appropriateness', + 'Apprvl': 'Approval', + 'Apprvd': 'Approved', + 'Apprvg': 'Approving', + 'Area': 'Area', + 'Arrgmnt': 'Arrangement', + 'Arrgmnts': 'Arrangements', + 'Arrears': 'Arrears', + 'Arrst': 'Arrest', + 'Arrstd': 'Arrested', + 'Arrsts': 'Arrests', + 'Arrs': 'Arriers', + 'Arrvl': 'Arrival', + 'As': 'As', + 'Aspts': 'Aspects', + 'Assntd': 'Assented', + 'Assessbl': 'Assessable', + 'Assmnt': 'Assessment', + 'Asst': 'Asset', + 'Assts': 'Assets', + 'Assgnd': 'Assigned', + 'Assgne': 'Assignee', + 'Assgnr': 'Assigner', + 'Assgnmt': 'Assignment', + 'Assoctd': 'Associated', + 'Assoctn': 'Association', + 'Assmptn': 'Assumption', + 'Assrnc': 'Assurance', + 'Assrd': 'Assured', + 'ASX': 'ASX', + 'Asmmtrc': 'Asymmetric', + 'At': 'At', + 'ATM': 'ATM', + 'ATMPIN': 'ATMPIN', + 'ATR': 'ATR', + 'Attchd': 'Attached', + 'Attchmnt': 'Attachment', + 'Attchmnts': 'Attachments', + 'Attndnc': 'Attendance', + 'Attndnt': 'Attendant', + 'Attndd': 'Attended', + 'Attndee': 'Attendee', + 'Attn': 'Attention', + 'Attny': 'Attorney', + 'Attr': 'Attribute', + 'Attrbts': 'Attributes', + 'Auctn': 'Auction', + 'Auctns': 'Auctions', + 'Audt': 'Audit', + 'Audtd': 'Audited', + 'Audtr': 'Auditor', + 'AUBSBx': 'AustralianExtensiveBranchNetworkIdentification', + 'AUBSBs': 'AustralianSmallNetworkIdentification', + 'ATBLZ': 'AustrianBankleitzahlIdentification', + 'Authntcd': 'Authenticated', + 'Authntcn': 'Authentication', + 'Authsb': 'Authorisable', + 'Authstn': 'Authorisation', + 'Authrsd': 'Authorised', + 'Authrty': 'Authority', + 'Auto': 'Auto', + 'Automtd': 'Automated', + 'Automtc': 'Automatic', + 'Autombl': 'Automobile', + 'Avlbty': 'Availability', + 'Avlbl': 'Available', + 'Avrg': 'Average', + 'Baby': 'Baby', + 'Bck': 'Back', + 'Bckd': 'Backed', + 'Bckp': 'Backup', + 'Bail': 'Bail', + 'Bal': 'Balance', + 'Bals': 'Balances', + 'Blln': 'Balloon', + 'Bllt': 'Ballot', + 'Bk': 'Bank', + 'Bkrs': 'Bankers', + 'Bkg': 'Banking', + 'Bnkrptcy': 'Bankruptcy', + 'Bks': 'Banks', + 'Brcd': 'Barcode', + 'Brgn': 'Bargain', + 'Brrr': 'Barrier', + 'Base': 'Base', + 'Based': 'Based', + 'Basel': 'Basel', + 'Baseln': 'Baseline', + 'Bsic': 'Basic', + 'Bsis': 'Basis', + 'Bskt': 'Basket', + 'Btch': 'Batch', + 'Btchs': 'Batches', + 'Bttry': 'Battery', + 'BBAN': 'BBAN', + 'BCE': 'BCE', + 'Be': 'Be', + 'Bear': 'Bear', + 'Br': 'Bearer', + 'Brg': 'Bearing', + 'Bed': 'Bed', + 'Beep': 'Beep', + 'Bfr': 'Before', + 'Begn': 'Begin', + 'BEI': 'BEI', + 'Belgn': 'Belgian', + 'Blw': 'Below', + 'Bchmk': 'Benchmark', + 'Bnfcl': 'Beneficial', + 'Bnfcry': 'Beneficiary', + 'Bnft': 'Benefit', + 'Bnfts': 'Benefits', + 'Bspk': 'Bespoke', + 'Best': 'Best', + 'Bynd': 'Beyond', + 'BIC': 'BIC', + 'BICFI': 'BICFI', + 'BICNonFI': 'BICNonFI', + 'Bid': 'Bid', + 'Bddr': 'Bidder', + 'Bddrs': 'Bidders', + 'Biddg': 'Bidding', + 'Bids': 'Bids', + 'Bil': 'Bilateral', + 'Bily': 'Bilaterally', + 'Bll': 'Bill', + 'Blld': 'Billed', + 'Bllg': 'Billing', + 'BIN': 'BIN', + 'Binry': 'Binary', + 'Bndg': 'Binding', + 'Birth': 'Birth', + 'Blnk': 'Blank', + 'Blck': 'Block', + 'Blckd': 'Blocked', + 'Blckg': 'Blocking', + 'Blmbrg': 'Bloomberg', + 'Brd': 'Board', + 'Body': 'Body', + 'Bd': 'Bond', + 'Bds': 'Bonds', + 'Bns': 'Bonus', + 'Book': 'Book', + 'Bookg': 'Booking', + 'Brrwd': 'Borrowed', + 'Brrwr': 'Borrower', + 'Brrwg': 'Borrowing', + 'Both': 'Both', + 'Bght': 'Bought', + 'Bdry': 'Boundary', + 'Bx': 'Box', + 'BPN': 'BPN', + 'Brakg': 'Braking', + 'Brnch': 'Branch', + 'Brnd': 'Brand', + 'Brch': 'Breach', + 'Brkg': 'Breakage', + 'Brkdwn': 'Breakdown', + 'Brkr': 'Broker', + 'Brkrg': 'Brokerage', + 'Brkrd': 'Brokered', + 'Brkrs': 'Brokers', + 'Brght': 'Brought', + 'Bckt': 'Bucket', + 'Bffr': 'Buffer', + 'Bld': 'Build', + 'Bldg': 'Building', + 'Blt': 'Built', + 'Blk': 'Bulk', + 'Bndl': 'Bundle', + 'Biz': 'Business', + 'Buy': 'Buy', + 'Buyr': 'Buyer', + 'By': 'By', + 'Bpss': 'Bypass', + 'B': 'Byte', + 'C10': 'C10', + 'CA': 'CA', + 'Clctd': 'Calculated', + 'Clctn': 'Calculation', + 'Cal': 'Calendar', + 'Call': 'Call', + 'Cllbl': 'Callable', + 'Clld': 'Called', + 'CACPA': 'CanadianPaymentsAssociationRoutingNumberIdentification', + 'Ccl': 'Cancel', + 'Cxl': 'Cancellation', + 'Cxls': 'Cancellations', + 'Canc': 'Cancelled', + 'Cap': 'Cap', + 'Cpblties': 'Capabilities', + 'Cpblty': 'Capability', + 'Cpbl': 'Capable', + 'Cpcty': 'Capacity', + 'Cptl': 'Capital', + 'Cptlstn': 'Capitalisation', + 'Cptlsd': 'Capitalised', + 'Capd': 'Capped', + 'Captr': 'Capture', + 'Captrd': 'Captured', + 'Car': 'Car', + 'Crbn': 'Carbon', + 'Card': 'Card', + 'Crdhldr': 'Cardholder', + 'Crds': 'Cards', + 'Care': 'Care', + 'Crrd': 'Carried', + 'Crrier': 'Carrier', + 'Case': 'Case', + 'Csh': 'Cash', + 'Cshr': 'Cashier', + 'Csstt': 'Cassette', + 'Cstg': 'Casting', + 'Ctgrs': 'Categories', + 'Ctgy': 'Category', + 'CBRF': 'CBRF', + 'CCDC': 'CCDC', + 'CCP': 'CCP', + 'Clng': 'Ceiling', + 'Ct': 'Cent', + 'Cntrl': 'Central', + 'Cntrld': 'Centralised', + 'Centrs': 'Centres', + 'Cert': 'Certificate', + 'Certd': 'Certificated', + 'Certs': 'Certificates', + 'Certfctn': 'Certification', + 'Certfd': 'Certified', + 'Cssn': 'Cession', + 'CFI': 'CFI', + 'Chain': 'Chain', + 'Chllng': 'Challenge', + 'Chng': 'Change', + 'Chngd': 'Changed', + 'Chngs': 'Changes', + 'Chanl': 'Channel', + 'Char': 'Character', + 'Chrtc': 'Characteristic', + 'Chrtcs': 'Characteristics', + 'Chars': 'Characters', + 'Chrg': 'Charge', + 'Chrgbck': 'Chargeback', + 'Chrgs': 'Charges', + 'Chrtr': 'Charter', + 'Chrtrr': 'Charterer', + 'Chck': 'Check', + 'Chckng': 'Checking', + 'Chckpt': 'Checkpoint', + 'Chcks': 'Checks', + 'Chcksm': 'Checksum', + 'Chq': 'Cheque', + 'Chqs': 'Cheques', + 'Chldrn': 'Children', + 'Chill': 'Chill', + 'USCH': 'CHIPSParticipantIdentification', + 'USCHU': 'CHIPSUniversalIdentification', + 'Chc': 'Choice', + 'Crct': 'Circuit', + 'Crcts': 'Circuits', + 'CIT': 'CIT', + 'Ctznsh': 'Citizenship', + 'City': 'City', + 'Cvl': 'Civil', + 'Clm': 'Claim', + 'Clmd': 'Claimed', + 'Clms': 'Claims', + 'Clss': 'Class', + 'Clssfctn': 'Classification', + 'Clause': 'Clause', + 'Clauses': 'Clauses', + 'Clean': 'Clean', + 'Clear': 'Clear', + 'Clrd': 'Cleared', + 'Clr': 'Clearing', + 'Clnt': 'Client', + 'Clpng': 'Clipping', + 'Clck': 'Clock', + 'Cls': 'Close', + 'Clsd': 'Closed', + 'Clsg': 'Closing', + 'Clsr': 'Closure', + 'CLS': 'CLS', + 'CMU': 'CMU', + 'Co': 'Co', + 'Coal': 'Coal', + 'Cd': 'Code', + 'Cdfctn': 'Codification', + 'Coeff': 'Coefficient', + 'Coll': 'Collateral', + 'Collstn': 'Collateralisation', + 'Collsd': 'Collateralised', + 'Colltn': 'Collection', + 'Cllctv': 'Collective', + 'Cmbnd': 'Combined', + 'Cmd': 'Command', + 'Cmds': 'Commands', + 'Commrtv': 'Commemorative', + 'Cmcmnt': 'Commencement', + 'Cmnt': 'Comment', + 'Cmnts': 'Comments', + 'Comrc': 'Commerce', + 'Comrcl': 'Commercial', + 'Comssn': 'Commission', + 'Comssns': 'Commissions', + 'Cmmtmnt': 'Commitment', + 'Cmmtd': 'Committed', + 'Cmmdties': 'Commodities', + 'Cmmdty': 'Commodity', + 'Cmon': 'Common', + 'Com': 'Communication', + 'Cmnty': 'Community', + 'Cpny': 'Company', + 'Cmpard': 'Compared', + 'Compstn': 'Compensation', + 'Cmptnt': 'Competent', + 'Cmplt': 'Complete', + 'Cmpltd': 'Completed', + 'Cmpltns': 'Completeness', + 'Cmpltn': 'Completion', + 'Cmplx': 'Complex', + 'Cmplc': 'Compliance', + 'Cmplnt': 'Compliant', + 'Cmply': 'Comply', + 'Cmpnt': 'Component', + 'Cmpsit': 'Composite', + 'Cmpnd': 'Compound', + 'Cmprssn': 'Compression', + 'Cmprmsd': 'Compromised', + 'Cmplsry': 'Compulsory', + 'Cmptn': 'Computation', + 'Cmptd': 'Computed', + 'Cncntrtn': 'Concentration', + 'Cncssn': 'Concession', + 'Cond': 'Condition', + 'Condl': 'Conditional', + 'Condly': 'Conditionally', + 'Conds': 'Conditions', + 'Cndct': 'Conduct', + 'Cndt': 'Conduit', + 'Cnfdnc': 'Confidence', + 'Cnfdtl': 'Confidential', + 'Cnfdtlty': 'Confidentiality', + 'Cfgtn': 'Configuration', + 'Conf': 'Confirmation', + 'Confs': 'Confirmations', + 'Confd': 'Confirmed', + 'Cnfrmr': 'Confirmer', + 'Cnfrmg': 'Confirming', + 'Cnjnctn': 'Conjunction', + 'Cnnctn': 'Connection', + 'Cnnctvty': 'Connectivity', + 'Cnsnt': 'Consent', + 'Cnsntd': 'Consented', + 'Cnsqnc': 'Consequence', + 'Cnsdrtn': 'Consideration', + 'Cnsdrd': 'Considered', + 'Consgn': 'Consignee', + 'Consgnmt': 'Consignment', + 'Consgnr': 'Consignor', + 'Cnsltd': 'Consolidated', + 'Cnsldtn': 'Consolidation', + 'Cst': 'Constant', + 'Cnsttnts': 'Constituents', + 'Cnstrctn': 'Construction', + 'Csmr': 'Consumer', + 'Csmptn': 'Consumption', + 'Ctct': 'Contact', + 'CT': 'Contain', + 'Cntnr': 'Container', + 'Cntt': 'Content', + 'Cnts': 'Contents', + 'Cntxt': 'Context', + 'Cntgnt': 'Contigent', + 'Conttn': 'Continuation', + 'Cntnty': 'Continuity', + 'Contra': 'Contra', + 'Ctrct': 'Contract', + 'Ctrctd': 'Contracted', + 'Ctrctg': 'Contracting', + 'Ctrcts': 'Contracts', + 'Ctrctl': 'Contractual', + 'Cntrbtn': 'Contribution', + 'Ctrl': 'Control', + 'Ctrlg': 'Controlling', + 'Cnvnnc': 'Convenience', + 'Cnvntn': 'Convention', + 'Convs': 'Conversion', + 'Convtd': 'Converted', + 'Convtbl': 'Convertible', + 'Coolnt': 'Coolant', + 'Cordints': 'Coordinates', + 'Cpd': 'Copied', + 'Cpy': 'Copy', + 'Core': 'Core', + 'Corp': 'Corporate', + 'Corptn': 'Corporation', + 'Crps': 'Corpus', + 'Crrct': 'Correct', + 'Crrctd': 'Corrected', + 'Crrctg': 'Correcting', + 'Crrctn': 'Correction', + 'Crrctv': 'Corrective', + 'Crrltn': 'Correlation', + 'Crspdc': 'Correspondence', + 'Crspdt': 'Correspondent', + 'Cost': 'Cost', + 'Costs': 'Costs', + 'Cnsl': 'Counsel', + 'Cnt': 'Count', + 'Cntr': 'Counter', + 'Cntrpt': 'Counterpart', + 'CtrPties': 'Counterparties', + 'CtrPty': 'Counterparty', + 'Cntrs': 'Counters', + 'Cntg': 'Counting', + 'Ctry': 'Country', + 'Counts': 'Counts', + 'Cty': 'County', + 'Cpn': 'Coupon', + 'Crt': 'Court', + 'Cvnnt': 'Covenant', + 'Cover': 'Cover', + 'Cvrg': 'Coverage', + 'Cvrd': 'Covered', + 'CP': 'CP', + 'Cret': 'Create', + 'Cretd': 'Created', + 'Cre': 'Creation', + 'Cretr': 'Creator', + 'Crdntl': 'Credential', + 'Crdntls': 'Credentials', + 'Cdt': 'Credit', + 'Cdtr': 'Creditor', + 'Crit': 'Criteria', + 'Critn': 'Criterion', + 'Cross': 'Cross', + 'CRS': 'CRS', + 'Crpt': 'Crypto', + 'Crstllstn': 'Crystallisation', + 'Crstllsd': 'Crystallised', + 'CSC': 'CSC', + 'CSD': 'CSD', + 'CTA': 'CTA', + 'Cum': 'Cum', + 'Cmltv': 'Cumulative', + 'Cure': 'Cure', + 'Ccies': 'Currencies', + 'Ccy': 'Currency', + 'Cur': 'Current', + 'Crv': 'Curve', + 'CUSIP': 'CUSIP', + 'Ctdn': 'Custodian', + 'Ctdy': 'Custody', + 'Cstm': 'Custom', + 'Cstmr': 'Customer', + 'Cstmsd': 'Customised', + 'Cut': 'Cut', + 'Cycl': 'Cycle', + 'Daly': 'Daily', + 'Dairy': 'Dairy', + 'Data': 'Data', + 'DB': 'Database', + 'Dt': 'Date', + 'Dtd': 'Dated', + 'Dts': 'Dates', + 'Day': 'Day', + 'Days': 'Days', + 'De': 'De', + 'Deactvtn': 'Deactivation', + 'Ddln': 'Deadline', + 'Ddlns': 'Deadlines', + 'Deal': 'Deal', + 'Dealr': 'Dealer', + 'Dealg': 'Dealing', + 'Dth': 'Death', + 'Dbt': 'Debit', + 'Dbtd': 'Debited', + 'Debt': 'Debt', + 'Dbtr': 'Debtor', + 'Dcsd': 'Deceased', + 'Dcml': 'Decimal', + 'Dcmlstn': 'Decimalisation', + 'Dcsn': 'Decision', + 'Dclrtn': 'Declaration', + 'Dclrd': 'Declared', + 'Dclnd': 'Declined', + 'Dcr': 'Decrease', + 'Dcrmtl': 'Decremental', + 'Ddctd': 'Dedicated', + 'Ddctn': 'Deduction', + 'Dmd': 'Deemed', + 'Dflt': 'Default', + 'Dfltd': 'Defaulted', + 'Dfltrs': 'Defaulters', + 'Dfrrl': 'Deferral', + 'Dfrrd': 'Deferred', + 'Dfcncy': 'Deficiency', + 'Dfcit': 'Deficit', + 'Dfnd': 'Defined', + 'Def': 'Definition', + 'Defs': 'Definitions', + 'Dely': 'Delay', + 'Delyd': 'Delayed', + 'Dlg': 'Delegate', + 'Dlgtd': 'Delegated', + 'Dlgtn': 'Delegation', + 'Del': 'Delete', + 'Deltd': 'Deleted', + 'Deltn': 'Deletion', + 'Dlmtr': 'Delimiter', + 'Dlistg': 'Delisting', + 'Dlvr': 'Deliver', + 'Dlvrbl': 'Deliverable', + 'Dlvrr': 'Deliverer', + 'Dlvrrs': 'Deliverers', + 'Dlvrg': 'Delivering', + 'Dlvry': 'Delivery', + 'Dlta': 'Delta', + 'Dmnd': 'Demand', + 'Dmndd': 'Demanded', + 'Dmtrlsd': 'Dematerialised', + 'DMnms': 'DeMinimis', + 'Dnl': 'Denial', + 'Dnd': 'Denied', + 'Dnmtn': 'Denomination', + 'Dnmtr': 'Denominator', + 'Dept': 'Department', + 'Dprture': 'Departure', + 'Dpst': 'Deposit', + 'Dpstary': 'Depositary', + 'Dpstd': 'Deposited', + 'Dpstries': 'Depositories', + 'Dpstry': 'Depository', + 'Dprctn': 'Depreciation', + 'Derivtn': 'Derivation', + 'Deriv': 'Derivative', + 'Derivs': 'Derivatives', + 'Drvd': 'Derived', + 'Drgtn': 'Derogation', + 'Dscndg': 'Descending', + 'Desc': 'Description', + 'Dscrptr': 'Descriptor', + 'Dsgntd': 'Designated', + 'Dsgnt': 'Designation', + 'Dsk': 'Desk', + 'Dstn': 'Destination', + 'Dtchmnt': 'Detachment', + 'Dtl': 'Detail', + 'Dtld': 'Detailed', + 'Dtls': 'Details', + 'Dtrmntn': 'Determination', + 'Dtrmnd': 'Determined', + 'Devtg': 'Deviating', + 'Dvtn': 'Deviation', + 'Dvc': 'Device', + 'Dgnss': 'Diagnosis', + 'Dgnstc': 'Diagnostic', + 'Dgnstcs': 'Diagnostics', + 'Dmmnm': 'Diammonium', + 'Diff': 'Difference', + 'Dgst': 'Digest', + 'Dgstd': 'Digested', + 'Dgt': 'Digit', + 'Dgtl': 'Digital', + 'Dgts': 'Digits', + 'Dltn': 'Dilution', + 'Dmnsns': 'Dimensions', + 'Drct': 'Direct', + 'Drctd': 'Directed', + 'Drctn': 'Direction', + 'Drctv': 'Directive', + 'Drctly': 'Directly', + 'Drctry': 'Directory', + 'Drty': 'Dirty', + 'Dsbl': 'Disable', + 'Dsbld': 'Disabled', + 'Dsbrsd': 'Disbursed', + 'Dsbrsmnt': 'Disbursement', + 'Dsbrsmnts': 'Disbursements', + 'Dscrdd': 'Discarded', + 'Dschrge': 'Discharge', + 'Dschrgd': 'Discharged', + 'Dsclmr': 'Disclaimer', + 'Dscld': 'Disclosed', + 'Dsclsr': 'Disclosure', + 'Dscnt': 'Discount', + 'Dscvry': 'Discovery', + 'Dscrpncy': 'Discrepancy', + 'Dscrtn': 'Discretion', + 'Dscrtnry': 'Discretionary', + 'Dsptchd': 'Dispatched', + 'Dspnsbl': 'Dispensable', + 'Dspns': 'Dispense', + 'Dspnsd': 'Dispensed', + 'Dsplcmnt': 'Displacement', + 'Disp': 'Display', + 'Dispd': 'Displayed', + 'Dspsl': 'Disposal', + 'Dspstn': 'Disposition', + 'Dspt': 'Dispute', + 'Dsptd': 'Disputed', + 'Dssmntn': 'Dissemination', + 'Dsstr': 'Dissenter', + 'Dstnc': 'Distance', + 'Dstllts': 'Distillates', + 'Dstngshd': 'Distinguished', + 'Dstrbtd': 'Distributed', + 'Dstrbtn': 'Distribution', + 'Dstrbtr': 'Distributor', + 'Dstrct': 'District', + 'DIV': 'DIV', + 'DIVANN': 'DIVANN', + 'Dvd': 'Divide', + 'Dvdd': 'Dividend', + 'Dvsn': 'Division', + 'DN': 'DN', + 'Do': 'Do', + 'Dctrn': 'Doctrine', + 'Doc': 'Document', + 'Dcmntry': 'Documentary', + 'Dcmnttn': 'Documentation', + 'Docs': 'Documents', + 'Domn': 'Domain', + 'Dmst': 'Domestic', + 'Dmcl': 'Domicile', + 'Dmcltn': 'Domiciliation', + 'Dontn': 'Donation', + 'Done': 'Done', + 'Dont': 'Dont', + 'Dwn': 'Down', + 'Dwnld': 'Download', + 'Drft': 'Draft', + 'Drwdwn': 'Drawdown', + 'Drwee': 'Drawee', + 'Drwr': 'Drawer', + 'Drwg': 'Drawing', + 'Drwn': 'Drawn', + 'Drip': 'DRIP', + 'Drv': 'Drive', + 'Drvr': 'Driver', + 'Drvrs': 'Drivers', + 'Drvg': 'Driving', + 'Drp': 'Drop', + 'Dry': 'Dry', + 'DSS': 'DSS', + 'DTC': 'DTC', + 'DTCC': 'DTCC', + 'DTCCCACO': 'DTCCCACO', + 'DTCCCANO': 'DTCCCANO', + 'DTCCCANOCSD': 'DTCCCANOCSD', + 'DTCCCAPA': 'DTCCCAPA', + 'DTCCCAPS': 'DTCCCAPS', + 'DTCFCP': 'DTCFCP', + 'DTCUS': 'DTCUS', + 'Dual': 'Dual', + 'Due': 'Due', + 'DUNS': 'DUNS', + 'Dplct': 'Duplicate', + 'Drtn': 'Duration', + 'Durg': 'During', + 'Dtch': 'Dutch', + 'Dty': 'Duty', + 'EANGLN': 'EANGLN', + 'EANUPC': 'EANUPC', + 'Earlr': 'Earlier', + 'Earlst': 'Earliest', + 'Early': 'Early', + 'Earmrk': 'Earmark', + 'Earngs': 'Earnings', + 'Estwrd': 'Eastward', + 'Ecnmc': 'Economic', + 'Ecnmy': 'Economy', + 'EDS': 'EDS', + 'Edctn': 'Education', + 'EEA': 'EEA', + 'Fct': 'Effect', + 'Fctv': 'Effective', + 'Effcncy': 'Efficiency', + 'Effcnt': 'Efficient', + 'EIPP': 'EIPP', + 'Elstc': 'Elastic', + 'Elctd': 'Elected', + 'Elctn': 'Election', + 'Elctrcty': 'Electricity', + 'Elctrnc': 'Electronic', + 'Elmt': 'Element', + 'Elmts': 'Elements', + 'Elgblty': 'Eligibility', + 'Elgbl': 'Eligible', + 'Lswhr': 'Elsewhere', + 'Email': 'Email', + 'Mbdd': 'Embedded', + 'EMIR': 'EMIR', + 'Emssn': 'Emission', + 'Emssns': 'Emissions', + 'Mplyee': 'Employee', + 'Mplyees': 'Employees', + 'Mplyr': 'Employer', + 'Emplng': 'Employing', + 'Mplymnt': 'Employment', + 'Mpty': 'Empty', + 'Nbl': 'Enable', + 'Nbld': 'Enabled', + 'Ncpsltd': 'Encapsulated', + 'Ncphrmnt': 'Encipherment', + 'Nclsd': 'Enclosed', + 'Nclsr': 'Enclosure', + 'Ncodg': 'Encoding', + 'Ncrpt': 'Encrypt', + 'Ncrptd': 'Encrypted', + 'Ncrptn': 'Encryption', + 'Ncmbrd': 'Encumbered', + 'End': 'End', + 'Endd': 'Ended', + 'Endg': 'Ending', + 'Ndrsng': 'Endorsing', + 'Nrgy': 'Energy', + 'Nfrcmnt': 'Enforcement', + 'Ngn': 'Engine', + 'En': 'English', + 'Nhncd': 'Enhanced', + 'Nhncmnt': 'Enhancement', + 'Enqry': 'Enquiry', + 'Enrlmnt': 'Enrolment', + 'Nsrd': 'Ensured', + 'Ntrd': 'Entered', + 'Ntrg': 'Entering', + 'Ntrprs': 'Enterprise', + 'Ntties': 'Entities', + 'Entitld': 'Entitled', + 'Entitlmnt': 'Entitlement', + 'Ntty': 'Entity', + 'Ntrprnrshp': 'Entrepreneurship', + 'Ntries': 'Entries', + 'Ntry': 'Entry', + 'Envlp': 'Envelope', + 'Envlpd': 'Enveloped', + 'Envt': 'Environment', + 'Envttl': 'Environmental', + 'EQ': 'Equal', + 'Equlstn': 'Equalisation', + 'Eqlzt': 'Equalization', + 'Eqpmnt': 'Equipment', + 'Eqty': 'Equity', + 'Eqvt': 'Equivalent', + 'ERISA': 'ERISA', + 'Err': 'Error', + 'Errs': 'Errors', + 'Escrw': 'Escrow', + 'Escrwd': 'Escrowed', + 'ESG': 'ESG', + 'ESMA': 'ESMA', + 'Estrc': 'Esoteric', + 'Estblishd': 'Established', + 'Estblishmt': 'Establishment', + 'Estt': 'Estate', + 'Estmt': 'Estimate', + 'Estmtd': 'Estimated', + 'ETC': 'ETC', + 'ETD': 'ETD', + 'Ethncty': 'Ethnicity', + 'EU': 'EU', + 'EUPSD': 'EUPSD', + 'EUPSD2SCA': 'EUPSD2SCA', + 'EUR': 'EUR', + 'Euro': 'Euro', + 'ED': 'Eurodollar', + 'Eurpn': 'European', + 'Evt': 'Event', + 'Evts': 'Events', + 'Evdnc': 'Evidence', + 'Ex': 'Ex', + 'Excdg': 'Exceeding', + 'Xcptn': 'Exception', + 'Xcptnl': 'Exceptional', + 'Xcptns': 'Exceptions', + 'Xcss': 'Excess', + 'Xchg': 'Exchange', + 'Xchgd': 'Exchanged', + 'Excld': 'Excluded', + 'Exclg': 'Excluding', + 'Exclsn': 'Exclusion', + 'Exclsv': 'Exclusive', + 'Exctbl': 'Executable', + 'Exct': 'Execute', + 'Exctd': 'Executed', + 'Exctg': 'Executing', + 'Exctn': 'Execution', + 'Xmpt': 'Exempt', + 'Xmptd': 'Exempted', + 'Xmptn': 'Exemption', + 'Exrcbl': 'Exercisable', + 'Exrc': 'Exercise', + 'Exstg': 'Existing', + 'Exit': 'Exit', + 'Extc': 'Exotic', + 'Xpctd': 'Expected', + 'Expndtr': 'Expenditure', + 'Expns': 'Expense', + 'Expnss': 'Expenses', + 'Exprnc': 'Experience', + 'Exprt': 'Expert', + 'Xprtn': 'Expiration', + 'Xpry': 'Expiry', + 'Expltn': 'Explanation', + 'Expnt': 'Exponent', + 'Exptr': 'Exporter', + 'Xpsd': 'Exposed', + 'Xpsr': 'Exposure', + 'Xpsrs': 'Exposures', + 'Xtnd': 'Extend', + 'Xtnded': 'Extended', + 'Xtndbl': 'Extendible', + 'Xtnsn': 'Extension', + 'Xtnt': 'Extent', + 'Xtrnl': 'External', + 'Xtrnly': 'Externally', + 'Xtra': 'Extra', + 'Face': 'Face', + 'Fclties': 'Facilities', + 'Fclty': 'Facility', + 'Fctr': 'Factor', + 'Factrg': 'Factoring', + 'Fctrstn': 'Factorisation', + 'Fctrs': 'Factors', + 'Fail': 'Fail', + 'Faild': 'Failed', + 'Flng': 'Failing', + 'Fls': 'Fails', + 'Failr': 'Failure', + 'Fair': 'Fair', + 'Fllbck': 'Fallback', + 'Fmly': 'Family', + 'FATCA': 'FATCA', + 'Fthr': 'Father', + 'Fax': 'Fax', + 'Featr': 'Feature', + 'Featrs': 'Features', + 'Fdrl': 'Federal', + 'USFW': 'FedwireRoutingNumberIdentification', + 'Fee': 'Fee', + 'Fees': 'Fees', + 'Fncd': 'Fenced', + 'Frtlzr': 'Fertilizer', + 'Fld': 'Field', + 'File': 'File', + 'FA': 'FileAct', + 'Filg': 'Filing', + 'Fill': 'Fill', + 'Filld': 'Filled', + 'Fillg': 'Filling', + 'Fltr': 'Filter', + 'FIN': 'FIN', + 'Fnl': 'Final', + 'Finc': 'Finance', + 'Fincd': 'Financed', + 'Fin': 'Financial', + 'FI': 'FinancialInstitution', + 'Fincg': 'Financing', + 'Fire': 'Fire', + 'Firm': 'Firm', + 'Frmwr': 'Firmware', + 'Frst': 'First', + 'Fscl': 'Fiscal', + 'FIToFI': 'FIToFI', + 'Five': 'Five', + 'Fxd': 'Fixed', + 'Fxg': 'Fixing', + 'Flg': 'Flag', + 'Flat': 'Flat', + 'Fleet': 'Fleet', + 'Flx': 'Flex', + 'Flxbl': 'Flexible', + 'Flght': 'Flight', + 'Fltg': 'Floating', + 'Flr': 'Floor', + 'Flow': 'Flow', + 'Flows': 'Flows', + 'Fcs': 'Focus', + 'Folio': 'Folio', + 'Fllw': 'Follow', + 'For': 'For', + 'Frbrnc': 'Forbearance', + 'Force': 'Force', + 'Forcd': 'Forced', + 'Fcst': 'Forecast', + 'Frcstd': 'Forecasted', + 'Frclsr': 'Foreclosure', + 'Frgn': 'Foreign', + 'FX': 'ForeignExchange', + 'Frstry': 'Forestry', + 'Frft': 'Forfeit', + 'Frgvnss': 'Forgiveness', + 'Form': 'Form', + 'Frmt': 'Format', + 'Frmtd': 'Formatted', + 'Frms': 'Forms', + 'Frmla': 'Formula', + 'Fwd': 'Forward', + 'Fwdd': 'Forwarded', + 'Fwdg': 'Forwarding', + 'Four': 'Four', + 'Frth': 'Fourth', + 'Frctn': 'Fraction', + 'Frctnl': 'Fractional', + 'Frame': 'Frame', + 'Frmwk': 'Framework', + 'Frnkd': 'Franked', + 'Frnkg': 'Franking', + 'Frd': 'Fraud', + 'Frdlnt': 'Fraudulent', + 'Free': 'Free', + 'Frght': 'Freight', + 'Frnch': 'French', + 'Frqcy': 'Frequency', + 'Fr': 'From', + 'Frnt': 'Front', + 'Fuel': 'Fuel', + 'Flfmt': 'Fulfilment', + 'Full': 'Full', + 'Fully': 'Fully', + 'Fctn': 'Function', + 'Fctnl': 'Functional', + 'Fnd': 'Fund', + 'Fndd': 'Funded', + 'Fndg': 'Funding', + 'FPP': 'FundProcessingPassport', + 'Fnds': 'Funds', + 'Fngb': 'Fungible', + 'Frthr': 'Further', + 'Futr': 'Future', + 'Futrs': 'Futures', + 'Fx': 'FX', + 'Gn': 'Gain', + 'Gns': 'Gains', + 'Game': 'Game', + 'Grnshee': 'Garnishee', + 'Grnshmt': 'Garnishment', + 'Gas': 'Gas', + 'Gtg': 'Gating', + 'Gauge': 'Gauge', + 'GBP': 'GBP', + 'GCA': 'GCA', + 'GDPR': 'GDPR', + 'Gndr': 'Gender', + 'Gnl': 'General', + 'Gnrtd': 'Generated', + 'Gnrtn': 'Generation', + 'Gnrtr': 'Generator', + 'Gnc': 'Generic', + 'G': 'Geo', + 'Geogc': 'Geographic', + 'Geo': 'Geographical', + 'Geogcs': 'Geographics', + 'Glctn': 'Geolocation', + 'Grmn': 'German', + 'DEBLZ': 'GermanBankleitzahlIdentification', + 'DE': 'Germany', + 'Get': 'Get', + 'GET': 'GET', + 'Gv': 'Give', + 'Gvn': 'Given', + 'Gbl': 'Global', + 'GMI': 'GMI', + 'Go': 'Go', + 'Gng': 'Going', + 'Gold': 'Gold', + 'Good': 'Good', + 'Goods': 'Goods', + 'Govnc': 'Governance', + 'Govng': 'Governing', + 'Govnt': 'Government', + 'GPI': 'Gpi', + 'Grace': 'Grace', + 'Grn': 'Grain', + 'Grd': 'Grand', + 'Grdfthd': 'Grandfathered', + 'Grant': 'Grant', + 'Grantd': 'Granted', + 'Grntr': 'Granter', + 'Grnlrty': 'Granularity', + 'Grtty': 'Gratuity', + 'Grss': 'Gross', + 'Grnd': 'Ground', + 'Grp': 'Group', + 'Grpg': 'Grouping', + 'Grwth': 'Growth', + 'Grnt': 'Guarantee', + 'Grnted': 'Guaranteed', + 'Guarntr': 'Guarantor', + 'Guardn': 'Guardian', + 'Gsts': 'Guests', + 'Hrcut': 'Haircut', + 'Half': 'Half', + 'Halt': 'Halt', + 'Hdlg': 'Handling', + 'Hard': 'Hard', + 'Hash': 'Hash', + 'Head': 'Head', + 'Hdr': 'Header', + 'Hlth': 'Health', + 'Hrg': 'Hearing', + 'Hdg': 'Hedge', + 'Hdgg': 'Hedging', + 'Held': 'Held', + 'GRHEBIC': 'HellenicBankIdentificationCode', + 'Hex': 'Hexadecimal', + 'Hddn': 'Hidden', + 'Hgh': 'High', + 'Hghr': 'Higher', + 'Hghst': 'Highest', + 'Hghly': 'Highly', + 'Hird': 'Hired', + 'Hstrc': 'Historic', + 'Hstrcl': 'Historical', + 'Hstry': 'History', + 'Hoc': 'Hoc', + 'Hld': 'Hold', + 'Hldr': 'Holder', + 'Hldg': 'Holding', + 'Hldgs': 'Holdings', + 'Home': 'Home', + 'HKNCC': 'HongKongBankCode', + 'Hnrd': 'Honored', + 'Hrzn': 'Horizon', + 'Hst': 'Host', + 'Hstg': 'Hosting', + 'Hrs': 'Hours', + 'Hs': 'House', + 'HsHld': 'Household', + 'HTTP': 'HTTP', + 'Hbmtr': 'Hubometer', + 'Hpthtcl': 'Hypothetical', + 'IATA': 'IATA', + 'IBAN': 'IBAN', + 'IBEI': 'IBEI', + 'ICC': 'ICC', + 'Id': 'Identification', + 'Ids': 'Identifications', + 'Idr': 'Identifier', + 'Idrs': 'Identifiers', + 'Idnty': 'Identity', + 'Idle': 'Idle', + 'If': 'If', + 'Ignr': 'Ignore', + 'Img': 'Image', + 'Imbal': 'Imbalance', + 'IMEI': 'IMEI', + 'Imdt': 'Immediate', + 'Imblsd': 'Immobilised', + 'IMO': 'IMO', + 'Impct': 'Impact', + 'Imprd': 'Impaired', + 'Implmnttn': 'Implementation', + 'Impld': 'Implied', + 'Imprtnt': 'Important', + 'Imprvmt': 'Improvement', + 'IMSI': 'IMSI', + 'In': 'In', + 'Inctvty': 'Inactivity', + 'Inbnd': 'Inbound', + 'Incntiv': 'Incentive', + 'Incptn': 'Inception', + 'Incdnt': 'Incident', + 'Incl': 'Included', + 'Inclg': 'Including', + 'Inclsn': 'Inclusion', + 'Inclsv': 'Inclusive', + 'Incm': 'Income', + 'Incmg': 'Incoming', + 'Incmptncy': 'Incompetency', + 'Incmptnt': 'Incompetent', + 'Incnsstncy': 'Inconsistency', + 'Incorprtn': 'Incorporation', + 'Incrrct': 'Incorrect', + 'Incotrms': 'Incoterms', + 'Incr': 'Increase', + 'Incrd': 'Increased', + 'Incrg': 'Increasing', + 'Incrmt': 'Increment', + 'Incrmtl': 'Incremental', + 'Indmnty': 'Indemnity', + 'Indpdnt': 'Independent', + 'Indx': 'Index', + 'INIFSC': 'IndianFinancialSystemCode', + 'Indctn': 'Indication', + 'Indctv': 'Indicative', + 'Ind': 'Indicator', + 'Indctrs': 'Indicators', + 'Indrct': 'Indirect', + 'Indv': 'Individual', + 'Indstrl': 'Industrial', + 'Indstry': 'Industry', + 'Ifrrd': 'Inferred', + 'Infltn': 'Inflation', + 'Infrm': 'Inform', + 'Inf': 'Information', + 'Infl': 'Informational', + 'Inftv': 'Informative', + 'Infrmd': 'Informed', + 'Infrmg': 'Informing', + 'Infrstrctr': 'Infrastructure', + 'Initl': 'Initial', + 'Initlstn': 'Initialisation', + 'Initls': 'Initials', + 'Init': 'Initiate', + 'Inittd': 'Initiated', + 'Initg': 'Initiating', + 'Initn': 'Initiation', + 'Initr': 'Initiator', + 'Innvtv': 'Innovative', + 'Inprtv': 'Inoperative', + 'Inpt': 'Input', + 'Nqry': 'Inquiry', + 'Insd': 'Inside', + 'Inslvncy': 'Insolvency', + 'Inspctn': 'Inspection', + 'Inspctr': 'Inspector', + 'Instlmt': 'Instalment', + 'Instlmts': 'Instalments', + 'Instnt': 'Instant', + 'Instt': 'Instate', + 'Instn': 'Institution', + 'Instnl': 'Institutional', + 'Instns': 'Institutions', + 'Inst': 'Instruct', + 'Instd': 'Instructed', + 'Instg': 'Instructing', + 'Instr': 'Instruction', + 'Instrs': 'Instructions', + 'Instrm': 'Instrument', + 'Instrms': 'Instruments', + 'Insrnc': 'Insurance', + 'Insrd': 'Insured', + 'Intgrtd': 'Integrated', + 'Intgtn': 'Integration', + 'Intnd': 'Intend', + 'Intndd': 'Intended', + 'Intt': 'Intent', + 'Intntn': 'Intention', + 'Intr': 'Inter', + 'IA': 'InterAct', + 'Intractn': 'Interaction', + 'IntrBk': 'Interbank', + 'Intrchng': 'Interchange', + 'Intrcnnctn': 'Interconnection', + 'Intrst': 'Interest', + 'Intrstd': 'Interested', + 'Intrfc': 'Interface', + 'Intrm': 'Interim', + 'Intrmkt': 'Intermarket', + 'Intrmies': 'Intermediaries', + 'Intrmy': 'Intermediary', + 'Intrmdt': 'Intermediate', + 'Intl': 'Internal', + 'Intlr': 'Internaliser', + 'Intrnl': 'International', + 'Intrvl': 'Interval', + 'Intra': 'Intra', + 'Ntrgrp': 'Intragroup', + 'Intrdcg': 'Introducing', + 'Invld': 'Invalid', + 'Invldty': 'Invalidity', + 'Nvrtd': 'Inverted', + 'Invstd': 'Invested', + 'Invstgtd': 'Investigated', + 'Invstgtn': 'Investigation', + 'Invstmt': 'Investment', + 'Invstmts': 'Investments', + 'Invstr': 'Investor', + 'Invstrs': 'Investors', + 'Invc': 'Invoice', + 'Invcd': 'Invoiced', + 'Invcee': 'Invoicee', + 'Invcr': 'Invoicer', + 'Invcg': 'Invoicing', + 'IOI': 'IOI', + 'IP': 'IP', + 'IRI': 'IRI', + 'IENSC': 'IrishNSCIdentification', + 'IRS': 'IRS', + 'Is': 'Is', + 'ISA': 'ISA', + 'Isabel': 'Isabel', + 'ISIN': 'ISIN', + 'ISO': 'ISO', + 'Issnc': 'Issuance', + 'Isse': 'Issue', + 'Issd': 'Issued', + 'Issr': 'Issuer', + 'Issg': 'Issuing', + 'ITNCC': 'ItalianDomesticIdentificationCode', + 'Itm': 'Item', + 'Itms': 'Items', + 'Jpns': 'Japanese', + 'JASDEC': 'JASDEC', + 'Job': 'Job', + 'Jnt': 'Joint', + 'Jrnl': 'Journal', + 'Jrny': 'Journey', + 'Judgmnts': 'Judgements', + 'Jursdctn': 'Jurisdiction', + 'Justfn': 'Justification', + 'KCV': 'KCV', + 'Keep': 'Keep', + 'KEK': 'KEK', + 'Key': 'Key', + 'Keys': 'Keys', + 'Kind': 'Kind', + 'Know': 'Know', + 'Knwldg': 'Knowledge', + 'Labl': 'Label', + 'Lbllg': 'Labelling', + 'Labr': 'Labor', + 'Lang': 'Language', + 'Lpsd': 'Lapsed', + 'Lrg': 'Large', + 'Lrgst': 'Largest', + 'Last': 'Last', + 'Late': 'Late', + 'Latr': 'Later', + 'Latst': 'Latest', + 'Lat': 'Latitude', + 'Lnch': 'Launch', + 'Lndrg': 'Laundering', + 'Law': 'Law', + 'Lead': 'Lead', + 'Leadr': 'Leader', + 'Leas': 'Lease', + 'Leasd': 'Leased', + 'Leashld': 'Leasehold', + 'Leasg': 'Leasing', + 'Leav': 'Leave', + 'Ldgr': 'Ledger', + 'Lft': 'Left', + 'Leg': 'Leg', + 'Lgl': 'Legal', + 'Legs': 'Legs', + 'LEI': 'LEI', + 'Lndr': 'Lender', + 'Lndg': 'Lending', + 'Lngth': 'Length', + 'Lttr': 'Letter', + 'Lvl': 'Level', + 'Lvls': 'Levels', + 'Lvrg': 'Leverage', + 'Lvrgd': 'Leveraged', + 'Levy': 'Levy', + 'Lblty': 'Liability', + 'Lic': 'License', + 'Lien': 'Lien', + 'Lieu': 'Lieu', + 'Life': 'Life', + 'Lftm': 'Lifetime', + 'Lght': 'Light', + 'Lmt': 'Limit', + 'Lmttn': 'Limitation', + 'Ltd': 'Limited', + 'Lmts': 'Limits', + 'Line': 'Line', + 'Lines': 'Lines', + 'Lk': 'Link', + 'Lkg': 'Linkage', + 'Lnkgs': 'Linkages', + 'Lkd': 'Linked', + 'Lqd': 'Liquid', + 'Lqdtn': 'Liquidation', + 'Lqdty': 'Liquidity', + 'List': 'List', + 'Listg': 'Listing', + 'Ltgtn': 'Litigation', + 'Live': 'Live', + 'Ld': 'Load', + 'Loadng': 'Loading', + 'Ln': 'Loan', + 'Lcl': 'Local', + 'Lcle': 'Locale', + 'Lct': 'Locate', + 'Lctn': 'Location', + 'Lctr': 'Locator', + 'Lck': 'Lock', + 'Lckout': 'Lockout', + 'Ldgmnt': 'Lodgement', + 'Ldgg': 'Lodging', + 'Lg': 'Log', + 'Lggd': 'Logged', + 'Logcl': 'Logical', + 'Lgn': 'Login', + 'Logstcs': 'Logistics', + 'Logo': 'Logo', + 'Lgt': 'Logout', + 'Lng': 'Long', + 'Lngr': 'Longer', + 'Long': 'Longitude', + 'Look': 'Look', + 'Loss': 'Loss', + 'Losses': 'Losses', + 'Lot': 'Lot', + 'Lots': 'Lots', + 'Ltry': 'Lottery', + 'Lw': 'Low', + 'Lwr': 'Lower', + 'Lwst': 'Lowest', + 'Llty': 'Loyalty', + 'LRCI': 'LRCI', + 'Lump': 'Lump', + 'MAC': 'MAC', + 'Macro': 'Macro', + 'Mgntc': 'Magnetic', + 'Mdn': 'Maiden', + 'Mail': 'Mail', + 'Mld': 'Mailed', + 'Mlng': 'Mailing', + 'Main': 'Main', + 'Mntng': 'Maintaining', + 'Mntnc': 'Maintenance', + 'Mjr': 'Major', + 'Make': 'Make', + 'Makr': 'Maker', + 'Man': 'Man', + 'Mgd': 'Managed', + 'Mgmt': 'Management', + 'Mgr': 'Manager', + 'Mgg': 'Managing', + 'Mndt': 'Mandate', + 'Mndtd': 'Mandated', + 'Mndtry': 'Mandatory', + 'Mnfst': 'Manifest', + 'Mntss': 'Mantissa', + 'Mnl': 'Manual', + 'Mnly': 'Manually', + 'Manfctrd': 'Manufactured', + 'Manfctr': 'Manufacturer', + 'Manfctg': 'Manufacturing', + 'Mrgn': 'Margin', + 'Mrgnd': 'Margined', + 'Mrk': 'Mark', + 'Mrkd': 'Marked', + 'Mrkr': 'Marker', + 'Mkt': 'Market', + 'Mrktbl': 'Marketable', + 'Mrktd': 'Marketed', + 'Mrktg': 'Marketing', + 'Mkts': 'Markets', + 'Mkp': 'Markup', + 'Msk': 'Mask', + 'Mskd': 'Masked', + 'Mass': 'Mass', + 'Mstr': 'Master', + 'Mtch': 'Match', + 'Mtchd': 'Matched', + 'Mtchs': 'Matches', + 'Mtchg': 'Matching', + 'Mtrl': 'Material', + 'Mtrlty': 'Materiality', + 'Mtrg': 'Maturing', + 'Mtrty': 'Maturity', + 'Mx': 'Max', + 'Max': 'Maximum', + 'May': 'May', + 'Means': 'Means', + 'Measr': 'Measure', + 'Measrmnt': 'Measurement', + 'Mchnsm': 'Mechanism', + 'Mdia': 'Media', + 'Mdcl': 'Medical', + 'Mdm': 'Medium', + 'Mtg': 'Meeting', + 'Mmb': 'Member', + 'Mmbsh': 'Membership', + 'Memo': 'Memo', + 'Mmrl': 'Memorial', + 'Mmry': 'Memory', + 'Menu': 'Menu', + 'Mrchnt': 'Merchant', + 'Mrgr': 'Merger', + 'Msg': 'Message', + 'Msgs': 'Messages', + 'MT': 'MessageType', + 'Msgg': 'Messaging', + 'Meta': 'Meta', + 'Metadata': 'Metadata', + 'Metl': 'Metal', + 'Mtrs': 'Meters', + 'Mtd': 'Method', + 'Mthdlgy': 'Methodology', + 'Mthds': 'Methods', + 'Mtrcs': 'Metrics', + 'MIC': 'MIC', + 'MICR': 'MICR', + 'McrFlm': 'Microfilm', + 'Mid': 'Mid', + 'Mddl': 'Middle', + 'MiFID': 'MiFID', + 'MiFIR': 'MiFIR', + 'Mgrtd': 'Migrated', + 'Mgrtn': 'Migration', + 'Mln': 'Million', + 'MIME': 'MIME', + 'Mnml': 'Minimal', + 'Min': 'Minimum', + 'Mnms': 'Minimus', + 'Mnr': 'Minor', + 'Mns': 'Minus', + 'Mrrr': 'Mirror', + 'Mis': 'Mis', + 'Misc': 'Miscellaneous', + 'Mssng': 'Missing', + 'Mix': 'Mix', + 'Mob': 'Mobile', + 'Modl': 'Modal', + 'Modlty': 'Modality', + 'Md': 'Mode', + 'Mdl': 'Model', + 'Mod': 'Modification', + 'Mods': 'Modifications', + 'Modfd': 'Modified', + 'Modfr': 'Modifier', + 'Modfy': 'Modify', + 'Mdls': 'Modules', + 'Mdlus': 'Modulus', + 'Mntry': 'Monetary', + 'Mny': 'Money', + 'Mntr': 'Monitor', + 'Mnth': 'Month', + 'Mnthly': 'Monthly', + 'Mnths': 'Months', + 'More': 'More', + 'Mrtg': 'Mortgage', + 'Most': 'Most', + 'Mthr': 'Mother', + 'MOTO': 'MOTO', + 'Mv': 'Move', + 'Mvd': 'Moved', + 'Mvmnt': 'Movement', + 'Mvmnts': 'Movements', + 'MSISDN': 'MSISDN', + 'Multi': 'Multi', + 'Mul': 'Multilateral', + 'Mltlg': 'Multileg', + 'Mltmdl': 'Multimodal', + 'Mltpl': 'Multiple', + 'Mltplr': 'Multiplier', + 'Mltply': 'Multiply', + 'Mncpl': 'Municipal', + 'Must': 'Must', + 'Mtl': 'Mutual', + 'My': 'My', + 'Nm': 'Name', + 'Nmd': 'Named', + 'Nrrtv': 'Narrative', + 'Ntl': 'National', + 'Ntlty': 'Nationality', + 'Ntrl': 'Natural', + 'Ntr': 'Nature', + 'NAV': 'NAV', + 'NCB': 'NCB', + 'Near': 'Near', + 'Need': 'Need', + 'Needs': 'Needs', + 'Neg': 'Negative', + 'Ngtbl': 'Negotiable', + 'Ngtd': 'Negotiated', + 'Net': 'Net', + 'Netd': 'Netted', + 'Netg': 'Netting', + 'Ntwk': 'Network', + 'Nvr': 'Never', + 'New': 'New', + 'Nwsprnt': 'Newsprint', + 'NZNCC': 'NewZealandNCCIdentification', + 'Nxt': 'Next', + 'Nine': 'Nine', + 'Ntrt': 'Nitrate', + 'No': 'No', + 'Nmnl': 'Nominal', + 'Nmntd': 'Nominated', + 'Nmnee': 'Nominee', + 'Non': 'Non', + 'NDF': 'NonDeliverableForward', + 'Nn': 'None', + 'NFI': 'NonFinancialInstitution', + 'Nrml': 'Normal', + 'Nrmlzd': 'Normalized', + 'Nrthwrd': 'Northward', + 'Nstr': 'Nostro', + 'Not': 'Not', + 'NCT': 'NotContain', + 'Note': 'Note', + 'Notehldr': 'Noteholder', + 'NEQ': 'NotEqual', + 'Notes': 'Notes', + 'Nthg': 'Nothing', + 'Ntce': 'Notice', + 'Ntfctn': 'Notification', + 'Ntfctns': 'Notifications', + 'Ntfd': 'Notified', + 'Ntfy': 'Notify', + 'Ntifng': 'Notifying', + 'Ntnl': 'Notional', + 'Nvtd': 'Novated', + 'Nvtn': 'Novation', + 'NPS': 'NPS', + 'NRA': 'NRA', + 'NT': 'NT', + 'Nb': 'Number', + 'Nmrtr': 'Numerator', + 'Nmrc': 'Numeric', + 'Nmrcl': 'Numerical', + 'Objct': 'Object', + 'Objctn': 'Objection', + 'Objctvs': 'Objectives', + 'Objcts': 'Objects', + 'Oblgtd': 'Obligated', + 'Oblgtn': 'Obligation', + 'Oblgtns': 'Obligations', + 'Oblgr': 'Obligor', + 'Obsrvtns': 'Observations', + 'Obtnd': 'Obtained', + 'OCC': 'OCC', + 'Ocpncy': 'Occupancy', + 'Ocrd': 'Occurred', + 'Ocrnc': 'Occurrence', + 'Ocrncs': 'Occurrences', + 'Odd': 'Odd', + 'Odmtr': 'Odometer', + 'Of': 'Of', + 'Off': 'Off', + 'Offer': 'Offer', + 'Offerd': 'Offered', + 'Offerr': 'Offeror', + 'Offc': 'Office', + 'Offcr': 'Officer', + 'Offcl': 'Official', + 'Offset': 'Offset', + 'OID': 'OID', + 'Oil': 'Oil', + 'Od': 'Old', + 'Olv': 'Olive', + 'Omnbs': 'Omnibus', + 'On': 'On', + 'Onbrdg': 'Onboarding', + 'One': 'One', + 'Onln': 'Online', + 'Only': 'Only', + 'Opn': 'Open', + 'Opng': 'Opening', + 'Oprg': 'Operating', + 'Opr': 'Operation', + 'Oprl': 'Operational', + 'Oprtr': 'Operator', + 'Optn': 'Option', + 'Optnl': 'Optional', + 'Or': 'Or', + 'Ordr': 'Order', + 'Ordrd': 'Ordered', + 'Ordrg': 'Ordering', + 'Ordrs': 'Orders', + 'Ordnry': 'Ordinary', + 'Org': 'Organisation', + 'Orgl': 'Organisational', + 'Orgn': 'Origin', + 'Orgnl': 'Original', + 'Orgtg': 'Originating', + 'Orgtn': 'Origination', + 'Orgtr': 'Originator', + 'OTC': 'OTC', + 'Othr': 'Other', + 'Out': 'Out', + 'Outg': 'Outage', + 'Outdtd': 'Outdated', + 'Outdr': 'Outdoor', + 'Outflw': 'Outflow', + 'Outgng': 'Outgoing', + 'Otlrs': 'Outliers', + 'Outpt': 'Output', + 'Outrght': 'Outright', + 'Outsd': 'Outside', + 'Outsdng': 'Outstanding', + 'Over': 'Over', + 'Ovrll': 'Overall', + 'Ovrdue': 'Overdue', + 'Ovrhd': 'Overhead', + 'Ovrnght': 'Overnight', + 'Ovrrd': 'Override', + 'Ovrsbcpt': 'Oversubscription', + 'Own': 'Own', + 'Ownd': 'Owned', + 'Ownr': 'Owner', + 'Ownrsh': 'Ownership', + 'Packg': 'Package', + 'Packgs': 'Packages', + 'Packgng': 'Packaging', + 'Packet': 'Packet', + 'Pad': 'Pad', + 'Pddg': 'Padding', + 'Pg': 'Page', + 'Pgntn': 'Pagination', + 'Pd': 'Paid', + 'Pair': 'Pair', + 'Paird': 'Paired', + 'Pairg': 'Pairing', + 'PAN': 'PAN', + 'Ppr': 'Paper', + 'Par': 'Par', + 'Prgrph': 'Paragraph', + 'Parll': 'Parallel', + 'Param': 'Parameter', + 'Params': 'Parameters', + 'Prnt': 'Parent', + 'Prpss': 'PariPassu', + 'Parity': 'Parity', + 'Part': 'Part', + 'Prtl': 'Partial', + 'Prtly': 'Partially', + 'Ptcpt': 'Participant', + 'Ptcpts': 'Participants', + 'Ptcp': 'Participate', + 'Prtcptg': 'Participating', + 'Prtcptn': 'Participation', + 'Pties': 'Parties', + 'Prtnr': 'Partner', + 'Pty': 'Party', + 'Pss': 'Pass', + 'Pssngr': 'Passenger', + 'Pssv': 'Passive', + 'Pspt': 'Passport', + 'Psptd': 'Passported', + 'Psptg': 'Passporting', + 'Pwd': 'Password', + 'Past': 'Past', + 'Pth': 'Path', + 'Pttrn': 'Pattern', + 'Pay': 'Pay', + 'Pybl': 'Payable', + 'Pyee': 'Payee', + 'Pyer': 'Payer', + 'Png': 'Paying', + 'Pyld': 'Payload', + 'Pmt': 'Payment', + 'Pmts': 'Payments', + 'Pyout': 'Payout', + 'Peak': 'Peak', + 'Peg': 'Peg', + 'Pggd': 'Pegged', + 'Pnlties': 'Penalties', + 'Pnlty': 'Penalty', + 'Pdg': 'Pending', + 'Pnsn': 'Pension', + 'Pnltmt': 'Penultimate', + 'PEP': 'PEP', + 'Per': 'Per', + 'Pct': 'Percent', + 'Pctg': 'Percentage', + 'Prfctn': 'Perfection', + 'Prfrm': 'Perform', + 'Prfrmnc': 'Performance', + 'Prfrmd': 'Performed', + 'Prfrmg': 'Performing', + 'Prd': 'Period', + 'Prdc': 'Periodic', + 'Prdcty': 'Periodicity', + 'Prds': 'Periods', + 'Prmssn': 'Permission', + 'Perptl': 'Perpetual', + 'Prsn': 'Person', + 'Prsnl': 'Personal', + 'Prsns': 'Persons', + 'Phs': 'Phase', + 'Phne': 'Phone', + 'Phspht': 'Phosphate', + 'Phys': 'Physical', + 'Phytosntry': 'Phytosanitary', + 'Pick': 'Pick', + 'Pckp': 'Pickup', + 'Pc': 'Piece', + 'Pcs': 'Pieces', + 'PIN': 'PIN', + 'PKI': 'PKI', + 'Plc': 'Place', + 'Plcmnt': 'Placement', + 'Plcs': 'Places', + 'Plain': 'Plain', + 'Plntff': 'Plaintiff', + 'Plan': 'Plan', + 'Pland': 'Planned', + 'Plstc': 'Plastic', + 'Pltfm': 'Platform', + 'Play': 'Play', + 'Pldg': 'Pledge', + 'Pldgd': 'Pledged', + 'Pldgee': 'Pledgee', + 'Pldgr': 'Pledger', + 'Pldgg': 'Pledging', + 'Plus': 'Plus', + 'PNZL': 'PNZL', + 'Pckt': 'Pocket', + 'POI': 'POI', + 'Pt': 'Point', + 'Pts': 'Points', + 'Plcy': 'Policy', + 'PLKNR': 'PolishNationalClearingCode', + 'Pltcly': 'Politically', + 'Plprpln': 'Polypropylene', + 'Pool': 'Pool', + 'Poolg': 'Pooling', + 'Pls': 'Pools', + 'Port': 'Port', + 'Prtfl': 'Portfolio', + 'Prtfls': 'Portfolios', + 'Prtn': 'Portion', + 'PTNCC': 'PortugueseNCCIdentification', + 'Pos': 'Position', + 'Poss': 'Positions', + 'Postv': 'Positive', + 'Pssssn': 'Possession', + 'Pssblty': 'Possibility', + 'Pssbl': 'Possible', + 'Pst': 'Post', + 'Pstg': 'Postage', + 'Pstl': 'Postal', + 'Pstd': 'Posted', + 'Pstng': 'Posting', + 'POB': 'PostOfficeBox', + 'Ptsh': 'Potash', + 'Ptt': 'Potato', + 'Potntl': 'Potential', + 'Pwr': 'Power', + 'Prctc': 'Practice', + 'Prctcs': 'Practices', + 'Prcttnr': 'Practitioner', + 'Pre': 'Pre', + 'Pradvc': 'Preadvice', + 'Prssgnd': 'Preassigned', + 'Prec': 'Preceding', + 'Prcs': 'Precious', + 'Precise': 'Precise', + 'Prcsn': 'Precision', + 'Prdfnd': 'Predefined', + 'Prdmnnt': 'Predominant', + 'Pref': 'Preference', + 'Prefs': 'Preferences', + 'Prfrntl': 'Preferential', + 'Prefrd': 'Preferred', + 'Prfx': 'Prefix', + 'Prfndd': 'Prefunded', + 'Prlimry': 'Preliminary', + 'Prmiss': 'Premises', + 'Prm': 'Premium', + 'Prepd': 'Prepaid', + 'Preptn': 'Preparation', + 'Prep': 'Prepare', + 'Prepmt': 'Prepayment', + 'Pres': 'Present', + 'Presntn': 'Presentation', + 'Presntd': 'Presented', + 'Presntr': 'Presenter', + 'Presntmnt': 'Presentment', + 'Prsrvtn': 'Preservation', + 'Prssr': 'Pressure', + 'Prstgs': 'Prestigious', + 'Prvl': 'Preval', + 'Prvntn': 'Prevention', + 'Prvs': 'Previous', + 'Prevsly': 'Previously', + 'Pric': 'Price', + 'Prics': 'Prices', + 'Pricg': 'Pricing', + 'PRIIPS': 'PRIIPS', + 'Pmry': 'Primary', + 'Prime': 'Prime', + 'Prncpl': 'Principal', + 'Prncpls': 'Principals', + 'Prt': 'Print', + 'Prr': 'Prior', + 'Prtistn': 'Prioritisation', + 'Prtisd': 'Prioritised', + 'Prty': 'Priority', + 'Prvt': 'Private', + 'Prvlg': 'Privilege', + 'Pr': 'Pro', + 'Prbblty': 'Probability', + 'Prcdr': 'Procedure', + 'Prcds': 'Proceeds', + 'Prc': 'Process', + 'Prcd': 'Processed', + 'Prcg': 'Processing', + 'Prcr': 'Processor', + 'Pdct': 'Product', + 'Pdctn': 'Production', + 'Pdcts': 'Products', + 'Prfssn': 'Profession', + 'Prfssnl': 'Professional', + 'Prfl': 'Profile', + 'Prft': 'Profit', + 'Prfts': 'Profits', + 'Profrm': 'Proforma', + 'Prgm': 'Program', + 'Prgrmm': 'Programme', + 'Prgrmms': 'Programmes', + 'Prgrs': 'Progress', + 'Prjctd': 'Projected', + 'Prlngtn': 'Prolongation', + 'Prmtn': 'Promotion', + 'Prmpt': 'Prompt', + 'Proof': 'Proof', + 'Props': 'Properties', + 'Prprty': 'Property', + 'Prpsl': 'Proposal', + 'Prp': 'Propose', + 'Propsd': 'Proposed', + 'Prtry': 'Proprietary', + 'ProRata': 'ProRata', + 'Prratn': 'Proration', + 'Prspcts': 'Prospectus', + 'Prtct': 'Protect', + 'Prtctd': 'Protected', + 'Prtcn': 'Protection', + 'Prtctr': 'Protector', + 'Prtcol': 'Protocol', + 'Prvdd': 'Provided', + 'Prvdr': 'Provider', + 'Prvdrs': 'Providers', + 'Prvc': 'Province', + 'Prvsn': 'Provision', + 'Prvsnl': 'Provisional', + 'Prxy': 'Proxy', + 'Pblc': 'Public', + 'Pblctn': 'Publication', + 'Pblshd': 'Published', + 'Pulp': 'Pulp', + 'Purchs': 'Purchase', + 'Purchsd': 'Purchased', + 'Purp': 'Purpose', + 'Prs': 'Purse', + 'Push': 'Push', + 'Pushd': 'Pushed', + 'Put': 'Put', + 'Putbl': 'Putable', + 'QR': 'QR', + 'Qlfctn': 'Qualification', + 'Qlfd': 'Qualified', + 'Qlfr': 'Qualifier', + 'Qlfyg': 'Qualifying', + 'Qlty': 'Quality', + 'Qttv': 'Quantitative', + 'Qties': 'Quantities', + 'Qty': 'Quantity', + 'Qrtr': 'Quarter', + 'Qry': 'Query', + 'Q': 'Queue', + 'Qd': 'Queued', + 'QUICK': 'QUICK', + 'Qrm': 'Quorum', + 'Qta': 'Quota', + 'Qtn': 'Quotation', + 'Qt': 'Quote', + 'Qtd': 'Quoted', + 'Qtee': 'Quotee', + 'Qts': 'Quotes', + 'Qtg': 'Quoting', + 'Rail': 'Rail', + 'Raisd': 'Raised', + 'Ramp': 'Ramp', + 'Rand': 'Random', + 'Rg': 'Range', + 'Rank': 'Rank', + 'Rnkg': 'Ranking', + 'Rate': 'Rate', + 'Ratd': 'Rated', + 'Rates': 'Rates', + 'Ratg': 'Rating', + 'Ratio': 'Ratio', + 'Ratn': 'Ration', + 'Raw': 'Raw', + 'RDP': 'RDP', + 'RDR': 'RDR', + 'Re': 'Re', + 'Rchbl': 'Reachable', + 'Rd': 'Read', + 'Rdr': 'Reader', + 'Rdng': 'Reading', + 'Rdy': 'Ready', + 'Real': 'Real', + 'Realsd': 'Realised', + 'Rallcn': 'Reallocation', + 'Rsn': 'Reason', + 'Rsns': 'Reasons', + 'Reauthstn': 'Reauthorisation', + 'Rbt': 'Rebate', + 'Rbts': 'Rebates', + 'Rbllg': 'Rebilling', + 'Rct': 'Receipt', + 'Rcts': 'Receipts', + 'Rcvbl': 'Receivable', + 'Rcv': 'Receive', + 'Rcvd': 'Received', + 'Rcvr': 'Receiver', + 'Rcvrs': 'Receivers', + 'Rcvrshp': 'Receivership', + 'Rcvg': 'Receiving', + 'Rcnt': 'Recent', + 'Rcptn': 'Reception', + 'Rcpt': 'Recipient', + 'Rclm': 'Reclaim', + 'Rcmmndtn': 'Recommendation', + 'Rcmmndd': 'Recommended', + 'Rcmpstn': 'Recomposition', + 'Rcncld': 'Reconciled', + 'Rcncltn': 'Reconciliation', + 'Rcnfrm': 'Reconfirm', + 'Rcrd': 'Record', + 'Rcrds': 'Records', + 'Rcrs': 'Recourse', + 'Rcvrblty': 'Recoverability', + 'Rcvrd': 'Recovered', + 'Rcovrs': 'Recoveries', + 'Rcovry': 'Recovery', + 'Rcrnt': 'Recurrent', + 'Rcrng': 'Recurring', + 'Rcycl': 'Recycle', + 'Rcycld': 'Recycled', + 'Red': 'Redemption', + 'Rdrctn': 'Redirection', + 'Rdc': 'Reduce', + 'Rdcg': 'Reducing', + 'Rdctn': 'Reduction', + 'Refr': 'Refer', + 'Ref': 'Reference', + 'Refd': 'Referenced', + 'Refs': 'References', + 'Refg': 'Referencing', + 'Rfrd': 'Referred', + 'Rfincg': 'Refinancing', + 'Rfrsh': 'Refresh', + 'Rfrgrtn': 'Refrigeration', + 'Rfnd': 'Refund', + 'Rfndd': 'Refunded', + 'Rfsl': 'Refusal', + 'Rfsd': 'Refused', + 'Rgm': 'Regime', + 'Rgn': 'Region', + 'Rgnl': 'Regional', + 'Regr': 'Register', + 'Regd': 'Registered', + 'Regar': 'Registrar', + 'Regn': 'Registration', + 'Regy': 'Registry', + 'Rglr': 'Regular', + 'Rgltn': 'Regulation', + 'Rgltr': 'Regulator', + 'Rgltry': 'Regulatory', + 'Rmbrsmnt': 'Reimbursement', + 'Rinstt': 'Reinstate', + 'Rinvst': 'Reinvest', + 'Rinvstd': 'Reinvested', + 'Rinvstmt': 'Reinvestment', + 'Rjct': 'Reject', + 'Rjctd': 'Rejected', + 'Rjctg': 'Rejecting', + 'Rjctn': 'Rejection', + 'Rjctns': 'Rejections', + 'Rltd': 'Related', + 'Rltsh': 'Relationship', + 'Rltv': 'Relative', + 'Rlay': 'Relay', + 'Rls': 'Release', + 'Rlsd': 'Released', + 'Rlvnt': 'Relevant', + 'Rlf': 'Relief', + 'Rmng': 'Remaining', + 'Rmktg': 'Remarketing', + 'Rmdl': 'Remedial', + 'Rmndr': 'Reminder', + 'Rmt': 'Remittance', + 'Rmtd': 'Remitted', + 'Rmot': 'Remote', + 'Rmvl': 'Removal', + 'Rmv': 'Remove', + 'Rmvd': 'Removed', + 'Rmnrtn': 'Remuneration', + 'Rnwbl': 'Renewable', + 'Rnncbl': 'Renounceable', + 'Rnvtd': 'Renovated', + 'Rnt': 'Rent', + 'Rntbl': 'Rentable', + 'Rntl': 'Rental', + 'Rntr': 'Renter', + 'RMns': 'RenunciationMinus', + 'RPlus': 'RenunciationPlus', + 'Reop': 'Reopen', + 'Rordrd': 'Reordered', + 'Rordrg': 'Reordering', + 'Reorg': 'Reorganisation', + 'Rpr': 'Repair', + 'Rprd': 'Repaired', + 'Rpy': 'Repay', + 'Rpmt': 'Repayment', + 'Rpeatd': 'Repeated', + 'Rpttns': 'Repetitions', + 'Rplc': 'Replace', + 'Rplcd': 'Replaced', + 'Rplcmnt': 'Replacement', + 'Rply': 'Reply', + 'Repo': 'Repo', + 'Rpt': 'Report', + 'Rptbl': 'Reportable', + 'Rptd': 'Reported', + 'Rptg': 'Reporting', + 'Rpts': 'Reports', + 'Rpstry': 'Repository', + 'Rprtv': 'Representative', + 'Rprnt': 'Reprint', + 'Rp': 'Repurchase', + 'Rprchsd': 'Repurchased', + 'Req': 'Request', + 'Reqd': 'Requested', + 'Rqstng': 'Requesting', + 'Rqstr': 'Requestor', + 'Reqs': 'Requests', + 'Reqrd': 'Required', + 'Rqrmnt': 'Requirement', + 'Rqrmnts': 'Requirements', + 'Reqrng': 'Requiring', + 'Rregn': 'Reregistration', + 'Rsrch': 'Research', + 'Rsellng': 'Reselling', + 'Rsnd': 'Resend', + 'Rsvatn': 'Reservation', + 'Rsv': 'Reserve', + 'Rsvd': 'Reserved', + 'Rst': 'Reset', + 'Res': 'Residence', + 'Resdcy': 'Residency', + 'Resdt': 'Resident', + 'Resdtl': 'Residential', + 'Rsdl': 'Residual', + 'Rsltn': 'Resolution', + 'Rsltns': 'Resolutions', + 'Rslvd': 'Resolved', + 'Rsrc': 'Resource', + 'Rsrcs': 'Resources', + 'Rspndr': 'Responder', + 'Rspndg': 'Responding', + 'Rspn': 'Response', + 'Rspnsblty': 'Responsibility', + 'Rspnsbl': 'Responsible', + 'Rstrctd': 'Restricted', + 'Rstrctn': 'Restriction', + 'Rstrctns': 'Restrictions', + 'Rstrd': 'Restructured', + 'Rstrg': 'Restructuring', + 'Rslt': 'Result', + 'Rsltnt': 'Resultant', + 'Rsltg': 'Resulting', + 'Rslts': 'Results', + 'Rsmd': 'Resumed', + 'Rtl': 'Retail', + 'Rtlr': 'Retailer', + 'Rtn': 'Retain', + 'Rtnd': 'Retained', + 'Rtntn': 'Retention', + 'Rtrmnt': 'Retirement', + 'Rtrctd': 'Retracted', + 'Rtrnsmssn': 'Retransmission', + 'Rtrvl': 'Retrieval', + 'Rtrcssn': 'Retrocession', + 'Rtrptv': 'Retrospective', + 'Rtr': 'Return', + 'Rtrd': 'Returned', + 'Rtrs': 'Returns', + 'Reuse': 'Reuse', + 'Reusd': 'Reused', + 'Rvaltn': 'Revaluation', + 'Rvn': 'Revenue', + 'Rvsl': 'Reversal', + 'Rvs': 'Reverse', + 'Rvsd': 'Reversed', + 'Rvsbl': 'Reversible', + 'Rvrsn': 'Reversion', + 'Rvisd': 'Revised', + 'Rvsn': 'Revision', + 'Rvv': 'Revive', + 'Rvvd': 'Revived', + 'Rvcblty': 'Revocability', + 'Rvlvg': 'Revolving', + 'RIC': 'RIC', + 'Rght': 'Right', + 'Rghts': 'Rights', + 'Ring': 'Ring', + 'Rsk': 'Risk', + 'Road': 'Road', + 'Role': 'Role', + 'Roles': 'Roles', + 'Roll': 'Roll', + 'Room': 'Room', + 'Rooms': 'Rooms', + 'Root': 'Root', + 'Rnd': 'Round', + 'Rndd': 'Rounded', + 'Rndg': 'Rounding', + 'Route': 'Route', + 'Rtg': 'Routing', + 'Row': 'Row', + 'Rylts': 'Royalties', + 'RPM': 'RPM', + 'RSA': 'RSA', + 'RTGS': 'RTGS', + 'RTGSLOM': 'RTGSLOM', + 'Rule': 'Rule', + 'Rules': 'Rules', + 'Run': 'Run', + 'RUCB': 'RussianCentralBankIdentificationCode', + 'Sfgrd': 'Safeguard', + 'Sfgrdd': 'Safeguarded', + 'Sfkpr': 'Safekeeper', + 'Sfkpg': 'Safekeeping', + 'Sfty': 'Safety', + 'Slry': 'Salary', + 'Sale': 'Sale', + 'Sales': 'Sales', + 'Salt': 'Salt', + 'Slvtn': 'Salvation', + 'Svgs': 'Savings', + 'SCA': 'SCA', + 'Scale': 'Scale', + 'Scnnd': 'Scanned', + 'Scnro': 'Scenario', + 'Schdl': 'Schedule', + 'Schdld': 'Scheduled', + 'Schma': 'Schema', + 'Schme': 'Scheme', + 'Scp': 'Scope', + 'Score': 'Score', + 'Scrng': 'Screening', + 'Scrip': 'Scrip', + 'Scrpt': 'Script', + 'Sea': 'Sea', + 'Sfd': 'Seafood', + 'Sch': 'Search', + 'SEC': 'SEC', + 'Scnd': 'Second', + 'Scndry': 'Secondary', + 'Sctn': 'Section', + 'Sctr': 'Sector', + 'Scr': 'Secure', + 'Scrd': 'Secured', + 'Scties': 'Securities', + 'Scrtstn': 'Securitisation', + 'Scrtsd': 'Securitised', + 'Scty': 'Security', + 'SEDOL': 'SEDOL', + 'Seed': 'Seed', + 'Sgmt': 'Segment', + 'Sgmttn': 'Segmentation', + 'Sgrtd': 'Segregated', + 'Sgrtn': 'Segregation', + 'Selctd': 'Selected', + 'Selctn': 'Selection', + 'Selctv': 'Selective', + 'Slf': 'Self', + 'Sell': 'Sell', + 'Sellr': 'Seller', + 'Sellg': 'Selling', + 'Snd': 'Send', + 'Sndr': 'Sender', + 'Sndrs': 'Senders', + 'Sndg': 'Sending', + 'Snr': 'Senior', + 'Snrty': 'Seniority', + 'Snstv': 'Sensitive', + 'Snt': 'Sent', + 'SEPA': 'SEPA', + 'Seq': 'Sequence', + 'Srl': 'Serial', + 'Sr': 'Serie', + 'Srs': 'Series', + 'Svr': 'Server', + 'Svc': 'Service', + 'Svcr': 'Servicer', + 'Svcs': 'Services', + 'Svcg': 'Servicing', + 'Ssn': 'Session', + 'Set': 'Set', + 'Setng': 'Setting', + 'Sttl': 'Settle', + 'Sttld': 'Settled', + 'Sttlm': 'Settlement', + 'Sttlg': 'Settling', + 'Sttlr': 'Settlor', + 'svrty': 'Severity', + 'SGX': 'SGX', + 'Shdw': 'Shadow', + 'Shr': 'Share', + 'Shrd': 'Shared', + 'Shrhldr': 'Shareholder', + 'Shrhldrs': 'Shareholders', + 'Shrhldg': 'Shareholding', + 'Shrs': 'Shares', + 'Shrg': 'Sharing', + 'Sheet': 'Sheet', + 'Shell': 'Shell', + 'Shft': 'Shift', + 'Ship': 'Ship', + 'Shipmnt': 'Shipment', + 'Shppg': 'Shipping', + 'Shrt': 'Short', + 'Shrtfll': 'Shortfall', + 'Show': 'Show', + 'SCVM': 'Sicovam', + 'Sd': 'Side', + 'Sdd': 'Sided', + 'Sddns': 'Sidedness', + 'Sgn': 'Sign', + 'Sgntries': 'Signatories', + 'Sgntry': 'Signatory', + 'Sgntr': 'Signature', + 'Sgntrs': 'Signatures', + 'Sgnd': 'Signed', + 'Sgnr': 'Signer', + 'Sgnfcnt': 'Significant', + 'Smpl': 'Simple', + 'Smplfd': 'Simplified', + 'Snc': 'Since', + 'Sngl': 'Single', + 'Site': 'Site', + 'Sz': 'Size', + 'Skin': 'Skin', + 'Sla': 'Sla', + 'SLA': 'SLA', + 'Slt': 'Slate', + 'Slip': 'Slip', + 'Slot': 'Slot', + 'Sml': 'Small', + 'SME': 'SME', + 'SNF': 'SNF', + 'Scl': 'Social', + 'Soft': 'Soft', + 'Sftwr': 'Software', + 'Sld': 'Sold', + 'Slctn': 'Solicitation', + 'Slctd': 'Solicited', + 'Sol': 'Solution', + 'Sort': 'Sort', + 'Srtd': 'Sorted', + 'Srtg': 'Sorting', + 'Sght': 'Sought', + 'Sound': 'Sound', + 'Src': 'Source', + 'ZANCC': 'SouthAfricanNCCIdentification', + 'Svrgn': 'Sovereign', + 'ES': 'Spain', + 'ESNCC': 'SpanishDomesticInterbankingIdentification', + 'Spcl': 'Special', + 'Spc': 'Specie', + 'Spcfc': 'Specific', + 'Spcfctn': 'Specification', + 'Spcfd': 'Specified', + 'Spd': 'Speed', + 'Splt': 'Split', + 'Spnsr': 'Sponsor', + 'Spnsrd': 'Sponsored', + 'Spnsrg': 'Sponsoring', + 'Spot': 'Spot', + 'Sprd': 'Spread', + 'Sprdbt': 'Spreadbet', + 'Sqr': 'Square', + 'SSI': 'SSI', + 'Stck': 'Stack', + 'Stff': 'Staff', + 'Stag': 'Stage', + 'Stl': 'Stale', + 'Stmp': 'Stamp', + 'Stmps': 'Stamps', + 'Stnd': 'Stand', + 'Stndln': 'Standalone', + 'Std': 'Standard', + 'Stdstn': 'Standardisation', + 'Stdsd': 'Standardised', + 'Stg': 'Standing', + 'Start': 'Start', + 'Startd': 'Started', + 'Startg': 'Starting', + 'Stat': 'State', + 'Stmt': 'Statement', + 'Stmts': 'Statements', + 'Statc': 'Static', + 'Sttstcl': 'Statistical', + 'Sttstcs': 'Statistics', + 'Sts': 'Status', + 'Stay': 'Stay', + 'Step': 'Step', + 'Stiptns': 'Stipulations', + 'Stock': 'Stock', + 'Stop': 'Stop', + 'Storg': 'Storage', + 'Stor': 'Store', + 'Stord': 'Stored', + 'STP': 'STP', + 'Strtgy': 'Strategy', + 'Strt': 'Street', + 'Strss': 'Stress', + 'Strssd': 'Stressed', + 'Strct': 'Strict', + 'Strk': 'Strike', + 'Strks': 'Strikes', + 'Strp': 'Stripe', + 'Strpbl': 'Strippable', + 'Strng': 'Strong', + 'Str': 'Structure', + 'Strd': 'Structured', + 'Strr': 'Structurer', + 'STS': 'STS', + 'Style': 'Style', + 'Sub': 'Sub', + 'Sbjt': 'Subject', + 'Submissn': 'Submission', + 'Submittd': 'Submitted', + 'Submitr': 'Submitter', + 'Submitg': 'Submitting', + 'Subrdnt': 'Subordinate', + 'Subrdntd': 'Subordinated', + 'Sbcbd': 'Subscribed', + 'Sbcbr': 'Subscriber', + 'Sbcpt': 'Subscription', + 'Subsctr': 'Subsector', + 'Sbsqnt': 'Subsequent', + 'Subset': 'Subset', + 'Sbstibl': 'Substitutable', + 'Sbstitn': 'Substitution', + 'Sbttl': 'Subtotal', + 'Sucss': 'Success', + 'Sucssr': 'Successor', + 'Sfx': 'Suffix', + 'Sggstd': 'Suggested', + 'Suite': 'Suite', + 'Slphr': 'Sulphur', + 'Sum': 'Sum', + 'Summry': 'Summary', + 'Summtn': 'Summation', + 'Sums': 'Sums', + 'Sndry': 'Sundry', + 'Sprvsd': 'Supervised', + 'Sprvsg': 'Supervising', + 'Sprvsr': 'Supervisor', + 'Spplmnt': 'Supplement', + 'Splmtry': 'Supplementary', + 'Spplr': 'Supplier', + 'Spply': 'Supply', + 'Spprt': 'Support', + 'Spprtd': 'Supported', + 'Spprtg': 'Supporting', + 'Sprntnl': 'Supranational', + 'Srchrg': 'Surcharge', + 'Srty': 'Surety', + 'Srnm': 'Surname', + 'Srrndr': 'Surrender', + 'Srvvg': 'Surviving', + 'Ssp': 'Suspend', + 'Sspd': 'Suspended', + 'Sspnsn': 'Suspension', + 'Sstnblty': 'Sustainability', + 'Swp': 'Swap', + 'Swps': 'Swaps', + 'Swptn': 'Swaption', + 'Sweep': 'Sweep', + 'Swift': 'SWIFT', + 'Swng': 'Swing', + 'CHBC': 'SwissBCIdentification', + 'CHSIC': 'SwissSICIdentification', + 'Swtch': 'Switch', + 'Symb': 'Symbol', + 'Smmtrc': 'Symmetric', + 'Synctn': 'Synchronisation', + 'Sndctd': 'Syndicated', + 'Sndctn': 'Syndication', + 'Snthtc': 'Synthetic', + 'Sys': 'System', + 'Systmtc': 'Systematic', + 'Tbl': 'Table', + 'Tag': 'Tag', + 'Take': 'Take', + 'Taken': 'Taken', + 'Tkvr': 'Takeover', + 'Takng': 'Taking', + 'Tank': 'Tank', + 'Trgt': 'Target', + 'Trgtg': 'Targeting', + 'Task': 'Task', + 'Tax': 'Tax', + 'Taxblty': 'Taxability', + 'Taxbl': 'Taxable', + 'Taxtn': 'Taxation', + 'Taxs': 'Taxes', + 'Tech': 'Technical', + 'Tchnq': 'Technique', + 'TED': 'TED', + 'TEFRA': 'TEFRA', + 'Telecom': 'Telecommunication', + 'Tel': 'Telephone', + 'Tltxt': 'Teletext', + 'Tlx': 'Telex', + 'Tmprtr': 'Temperature', + 'Tmplt': 'Template', + 'Temp': 'Temporary', + 'Tnnt': 'Tenant', + 'Tndr': 'Tender', + 'Tnr': 'Tenor', + 'Term': 'Term', + 'Termnl': 'Terminal', + 'Termnt': 'Terminate', + 'Termntd': 'Terminated', + 'Termntn': 'Termination', + 'Terms': 'Terms', + 'Trtrl': 'Territorial', + 'Tst': 'Test', + 'Tstg': 'Testing', + 'Txt': 'Text', + 'Txtl': 'Textual', + 'Than': 'Than', + 'The': 'The', + 'Thrd': 'Third', + 'Thrty': 'Thirty', + 'Three': 'Three', + 'Thrshld': 'Threshold', + 'Thrgh': 'Through', + 'Thru': 'Thru', + 'Tick': 'Tick', + 'Tckr': 'Ticker', + 'Tckt': 'Ticket', + 'Tckts': 'Tickets', + 'Till': 'Till', + 'Tm': 'Time', + 'Tmstmp': 'Timestamp', + 'Tmg': 'Timing', + 'Titl': 'Title', + 'TM': 'TM', + 'TMS': 'TMS', + 'To': 'To', + 'Tkn': 'Token', + 'Tlrnce': 'Tolerance', + 'Toll': 'Toll', + 'Top': 'Top', + 'Ttl': 'Total', + 'Ttls': 'Totals', + 'Twn': 'Town', + 'TR': 'TR', + 'TR34': 'TR34', + 'Trac': 'Trace', + 'Tracblt': 'Traceability', + 'Trck': 'Track', + 'Trckd': 'Tracked', + 'Trckr': 'Tracker', + 'Trckg': 'Tracking', + 'Trad': 'Trade', + 'Tradd': 'Traded', + 'TMns': 'TradeMinus', + 'TPlus': 'TradePlus', + 'Tradr': 'Trader', + 'Trds': 'Trades', + 'Tradg': 'Trading', + 'Trl': 'Trail', + 'Trlr': 'Trailer', + 'Trng': 'Training', + 'Trch': 'Tranche', + 'Trnchd': 'Tranched', + 'Trnchs': 'Tranches', + 'Trns': 'Trans', + 'Tx': 'Transaction', + 'Txnl': 'Transactional', + 'Txs': 'Transactions', + 'Trf': 'Transfer', + 'Trfbl': 'Transferable', + 'Trfee': 'Transferee', + 'Trfr': 'Transferor', + 'Trfd': 'Transferred', + 'Trfs': 'Transfers', + 'Trfrmatn': 'Transformation', + 'Trnst': 'Transit', + 'Trnsltn': 'Translation', + 'Trnsmssn': 'Transmission', + 'Trnsmttg': 'Transmitting', + 'Trnsprncy': 'Transparency', + 'Trnspndr': 'Transponder', + 'Trnsprt': 'Transport', + 'Trnsprtd': 'Transported', + 'TrnsShipmnt': 'Transshipment', + 'Trpg': 'Trapping', + 'Trvl': 'Travel', + 'Trsr': 'Treasury', + 'Trtd': 'Treated', + 'Trtmnt': 'Treatment', + 'Trils': 'Trials', + 'Trggr': 'Trigger', + 'Trggrd': 'Triggered', + 'Trggrg': 'Triggering', + 'Trip': 'Trip', + 'Trprtt': 'Tripartite', + 'Trpty': 'Triparty', + 'TRUE': 'TRUE', + 'Trst': 'Trust', + 'Trstee': 'Trustee', + 'Try': 'Try', + 'TSE': 'TSE', + 'TSEJASDEC': 'TSEJASDEC', + 'TSU': 'TSU', + 'Trnd': 'Turned', + 'Trnvr': 'Turnover', + 'Twin': 'Twin', + 'Two': 'Two', + 'Tp': 'Type', + 'UCITS': 'UCITS', + 'UETR': 'UETR', + 'GBSC': 'UKDomesticSortCode', + 'Ultmt': 'Ultimate', + 'Umbrll': 'Umbrella', + 'Ubl': 'Unable', + 'Uaccptd': 'Unaccepted', + 'Uadjstd': 'Unadjusted', + 'Uafctd': 'Unaffected', + 'Uaffrmd': 'Unaffirmed', + 'Uallctd': 'Unallocated', + 'Uattndd': 'Unattended', + 'Uclmd': 'Unclaimed', + 'Uncollsd': 'Uncollateralised', + 'Ucmmtd': 'Uncommitted', + 'Ucondl': 'Unconditional', + 'Ucvrd': 'Uncovered', + 'Ucrstllsd': 'Uncrystallised', + 'Udlvrd': 'Undelivered', + 'Udr': 'Under', + 'Undrlyg': 'Underlying', + 'Udrtkg': 'Undertaking', + 'Udrtkgs': 'Undertakings', + 'Udrwrt': 'Underwrite', + 'Udrwrtr': 'Underwriter', + 'Udrwrtg': 'Underwriting', + 'Udscld': 'Undisclosed', + 'Udsptd': 'Undisputed', + 'Udrwn': 'Undrawn', + 'Unfltrd': 'Unfiltered', + 'Ufrnkd': 'Unfranked', + 'Ufndd': 'Unfunded', + 'Unltrl': 'Unilateral', + 'Uinstd': 'Uninstructed', + 'Unq': 'Unique', + 'Unit': 'Unit', + 'Units': 'Units', + 'Uvrsl': 'Universal', + 'Uknwn': 'Unknown', + 'Ultd': 'Unlimited', + 'Umtchd': 'Unmatched', + 'Unpd': 'Unpaid', + 'Unprd': 'Unpaired', + 'Upldgd': 'Unpledged', + 'Urlsd': 'Unrealised', + 'Uschdld': 'Unscheduled', + 'Uscrd': 'Unsecured', + 'Usttld': 'Unsettled', + 'Ustrd': 'Unstructured', + 'Until': 'Until', + 'Utrnchd': 'Untranched', + 'Uusd': 'Unused', + 'Up': 'Up', + 'Upcmg': 'Upcoming', + 'Upd': 'Update', + 'Updtd': 'Updated', + 'Upfrnt': 'Upfront', + 'UPIC': 'UPIC', + 'Upper': 'Upper', + 'URBPO': 'URBPO', + 'Urea': 'Urea', + 'Urgcy': 'Urgency', + 'Urgt': 'Urgent', + 'URI': 'URI', + 'URL': 'URL', + 'US': 'US', + 'Usg': 'Usage', + 'USD': 'USD', + 'Usd': 'Used', + 'Usr': 'User', + 'Usrs': 'Users', + 'Usl': 'Usual', + 'Usfrct': 'Usufruct', + 'UTC': 'UTC', + 'Utlstn': 'Utilisation', + 'UTM': 'UTM', + 'UUID': 'UUID', + 'Vcnt': 'Vacant', + 'Vld': 'Valid', + 'Vldtd': 'Validated', + 'Vldtng': 'Validating', + 'Vldtn': 'Validation', + 'Vldty': 'Validity', + 'Vlrn': 'Valoren', + 'Valtn': 'Valuation', + 'Val': 'Value', + 'Vlr': 'Valuer', + 'Vals': 'Values', + 'Varbl': 'Variable', + 'Var': 'Variance', + 'Varnt': 'Variant', + 'Vart': 'Variate', + 'Vartn': 'Variation', + 'Vartns': 'Variations', + 'VAT': 'VAT', + 'Vctr': 'Vector', + 'Vhcl': 'Vehicle', + 'Vndr': 'Vendor', + 'Vntr': 'Venture', + 'Vn': 'Venue', + 'Verb': 'Verb', + 'Vrfctn': 'Verification', + 'Vrsn': 'Version', + 'Vrss': 'Versus', + 'Vssl': 'Vessel', + 'View': 'View', + 'Vwr': 'Viewer', + 'Vllg': 'Village', + 'VIP': 'VIP', + 'Vsblty': 'Visibility', + 'Voltly': 'Volatility', + 'Vltg': 'Voltage', + 'Vol': 'Volume', + 'Vlntry': 'Voluntary', + 'Vstr': 'Vostro', + 'Vote': 'Vote', + 'Vtng': 'Voting', + 'Vchr': 'Voucher', + 'Vyg': 'Voyage', + 'Vlnrblty': 'Vulnerability', + 'Wait': 'Wait', + 'Wtg': 'Waiting', + 'Wvd': 'Waived', + 'Wvr': 'Waiver', + 'Wvg': 'Waiving', + 'Wllt': 'Wallet', + 'Warm': 'Warm', + 'Wrng': 'Warning', + 'Wrnngs': 'Warnings', + 'Warrt': 'Warrant', + 'Wtchlst': 'Watchlist', + 'Wtrfll': 'Waterfall', + 'Wav': 'Wave', + 'Way': 'Way', + 'Wlth': 'Wealth', + 'Wthr': 'Weather', + 'Web': 'Web', + 'Wk': 'Week', + 'Wkly': 'Weekly', + 'Wght': 'Weight', + 'Wghtd': 'Weighted', + 'Wrtppr': 'Wertpapier', + 'Wet': 'Wet', + 'Wht': 'White', + 'Whl': 'Whole', + 'Whly': 'Wholly', + 'Width': 'Width', + 'Will': 'Will', + 'Wndg': 'Winding', + 'Wndw': 'Window', + 'Wnng': 'Winning', + 'Wire': 'Wire', + 'Wth': 'With', + 'Wdrw': 'Withdraw', + 'Wdrwl': 'Withdrawal', + 'Wdrwn': 'Withdrawn', + 'Wthhld': 'Withhold', + 'Whldg': 'Withholding', + 'Wthn': 'Within', + 'Wtht': 'Without', + 'Wrdg': 'Wording', + 'Work': 'Work', + 'Workflw': 'Workflow', + 'Workg': 'Working', + 'Workt': 'Workout', + 'Wrthls': 'Worthless', + 'Wrppr': 'Wrapper', + 'Wrt': 'Write', + 'Wrtg': 'Writing', + 'Wrttn': 'Written', + 'Wrttg': 'Writting', + 'Yr': 'Year', + 'Yrs': 'Years', + 'Yld': 'Yield', + 'Yldd': 'Yielded', + 'York': 'York', + 'Your': 'Your', + 'Zero': 'Zero', + 'Zone': 'Zone', + 'Zwschngwn': 'Zwischengewinn', +} + + +def _iso20022_term_translator(mnemonic): + new_name = "" + list_of_mnems = re.split(r'(?<=[a-z\/ ])(?=[ \/A-Z])', mnemonic) + for key in list_of_mnems: + new_name += mnemonics.get(key, key) + new_name += " " + + squashed = ' '.join(new_name.split()) + + return squashed.strip() + + +def _modify_key(clean_mnems, translate=True): + if translate: + clean_mnems = _iso20022_term_translator(clean_mnems) + return clean_mnems + + +def _parse_element(element, parent_name='', translate=True): + data_dict = {} + for child in element: + child_name = f"{parent_name} / {child.tag}" if parent_name else child.tag + + if len(child): + data_dict.update(_parse_element(child, + child_name, + translate=translate)) + else: + data_dict[child_name] = child.text + + modified_dict = {_modify_key(k, translate=translate): v for k, v in data_dict.items()} + + return modified_dict + + +def camt053_to_df(xml_fname, translate=True): + """ + Create a pandas DataFrame from a camt053 xml file + """ + with open(xml_fname, "rb") as xml_file: + xml_data = xml_file.read() + + root = etree.fromstring(xml_data) + data = [] + + for elem in root.getiterator(): + if not hasattr(elem.tag, 'find'): + continue + ind = elem.tag.find('}') + if ind > 0: + elem.tag = elem.tag[ind+1:] + + elements = root.xpath('//Ntry') + + for record in elements: + record_data = _parse_element(record, translate=translate) + data.append(record_data) + + return pd.DataFrame(data) + + +def camt053_to_excel(xml_fname, excel_fname, translate=True): + """ + Create an excel file from a camt053 xml file + """ + df = camt053_to_df(xml_fname, translate) + df.to_excel(excel_fname, index=False) diff --git a/requirements.txt b/requirements.txt index 753bb1a..221ff5e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ pytest xsdata[cli,lxml,soap] +pandas +openpyxl diff --git a/setup.py b/setup.py index d2bd0bb..e0ed88e 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="pyiso20022", - version="0.6.7", + version="1.1.2", author="Peter Houghton", author_email="pete@investigatingsoftware.co.uk", description="pyiso20022 is a library for generating ISO20022 messages in Python.", diff --git a/tests/parse_camt053_msgs_test.py b/tests/parse_camt053_msgs_test.py index 7f782a6..33350ba 100644 --- a/tests/parse_camt053_msgs_test.py +++ b/tests/parse_camt053_msgs_test.py @@ -6,7 +6,7 @@ @pytest.mark.parametrize("expected_acc_id", [ ("DD01100056869") ]) -def test_parse_camt052_001_02(expected_acc_id): +def test_parse_camt053_001_02(expected_acc_id): parser = XmlParser() diff --git a/tests/tools_camt053_msgs_test.py b/tests/tools_camt053_msgs_test.py new file mode 100644 index 0000000..4734ecd --- /dev/null +++ b/tests/tools_camt053_msgs_test.py @@ -0,0 +1,34 @@ +import pytest +from pyiso20022.tools.camt053_extract import * +import tempfile +import pandas as pd + + +@pytest.mark.parametrize("entry_reference, msg_id", [ + ("52198301", "20230928LTERMID100000312221631FT01") + ]) +def test_pandas_df_camt053_001_02(entry_reference, msg_id): + + df = camt053_to_df("example_files/gs_camt/camt053_001_02.xml") + + result = df[df['Entry Reference'] == entry_reference]["Entry Details / Transaction Details / References / Message Identification"] + + assert result.values[0] == msg_id + + +@pytest.mark.parametrize("entry_reference, msg_id", [ + ("52198301", "20230928LTERMID100000312221631FT01") + ]) +def test_excel_camt053_001_02(entry_reference, msg_id): + + tmp_file = tempfile.NamedTemporaryFile(suffix=".xlsx") + tmp_file_name = tmp_file.name + + camt053_to_excel("example_files/gs_camt/camt053_001_02.xml", tmp_file_name) + + df = pd.read_excel(tmp_file_name, sheet_name='Sheet1') + + tmp_file.close() + + result = df[df['Entry Reference'].astype(str) == str(entry_reference)]["Entry Details / Transaction Details / References / Message Identification"] + assert result.values[0] == msg_id