package acmt_001_001_04

import (
	"bytes"
	"encoding/xml"
	"time"
)

type Account2 struct {
	Id       AccountIdentification1     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	AcctSvcr PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr"`
}

type AccountIdentification1 struct {
	Prtry SimpleIdentificationInformation `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type AccountIdentificationAndName3 struct {
	Id CashAccountIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Nm Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
}

type AccountOpeningInstructionV04 struct {
	MsgId            MessageIdentification1                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MsgId"`
	OrdrRef          InvestmentFundOrder4                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrRef,omitempty"`
	PrvsRef          AdditionalReference3                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrvsRef,omitempty"`
	InstrDtls        InvestmentAccountOpeningDetails            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InstrDtls"`
	InvstmtAcct      InvestmentAccount37                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcct"`
	AcctPties        AccountParties9                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctPties"`
	Intrmies         []Intermediary24                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Intrmies,omitempty"`
	Plcmnt           ReferredAgent1                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Plcmnt,omitempty"`
	NewIsseAllcn     NewIssueAllocation1                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NewIsseAllcn,omitempty"`
	SvgsInvstmtPlan  []InvestmentPlan9                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvgsInvstmtPlan,omitempty"`
	WdrwlInvstmtPlan []InvestmentPlan9                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 WdrwlInvstmtPlan,omitempty"`
	CshSttlm         []InvestmentFundCashSettlementInformation7 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshSttlm,omitempty"`
	SvcLvlAgrmt      []DocumentToSend1                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvcLvlAgrmt,omitempty"`
	MktPrctcVrsn     MarketPracticeVersion1                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MktPrctcVrsn,omitempty"`
	Xtnsn            []Extension1                               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Xtnsn,omitempty"`
}

type AccountOpeningType1Code string

type AccountOwnershipType3Code string

type AccountParties4Choice struct {
	PmryOwnr   InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryOwnr"`
	Trstee     []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Trstee"`
	CtdnForMnr InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtdnForMnr"`
	Nmnee      InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nmnee"`
	JntOwnr    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 JntOwnr"`
}

type AccountParties9 struct {
	PrncplAcctPty AccountParties4Choice                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrncplAcctPty"`
	ScndryOwnr    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryOwnr,omitempty"`
	Bnfcry        []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Bnfcry,omitempty"`
	PwrOfAttny    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PwrOfAttny,omitempty"`
	LglGuardn     []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LglGuardn,omitempty"`
	SucssrOnDth   []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SucssrOnDth,omitempty"`
	Admstr        []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Admstr,omitempty"`
	OthrPty       []ExtendedParty6                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPty,omitempty"`
	Grntr         []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Grntr,omitempty"`
	Sttlr         []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Sttlr,omitempty"`
}

type AccountType1Choice struct {
	Cd    FundCashAccount3Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type AccountUsageType1Choice struct {
	Cd    AccountUsageType1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type AccountUsageType1Code string

type ActiveCurrencyAnd13DecimalAmount struct {
	Value float64            `xml:",chardata"`
	Ccy   ActiveCurrencyCode `xml:"Ccy,attr"`
}

type ActiveCurrencyAndAmount struct {
	Value float64            `xml:",chardata"`
	Ccy   ActiveCurrencyCode `xml:"Ccy,attr"`
}

type ActiveCurrencyCode string

type AdditionalReference3 struct {
	Ref     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ref"`
	RefIssr PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RefIssr,omitempty"`
	MsgNm   Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MsgNm,omitempty"`
}

type AddressType1Code string

type AddressType2Code string

type AlternateSecurityIdentification1 struct {
	Id         Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	DmstIdSrc  CountryCode `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DmstIdSrc"`
	PrtryIdSrc Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryIdSrc"`
}

type AnyBICIdentifier string

type AustrianBankleitzahlIdentifier string

type BBANIdentifier string

type BICIdentifier string

type Blocked1 struct {
	OrdrTp []FundOrderType1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrTp"`
	Blckd  bool                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Blckd"`
	Rsn    BlockedReason1Choice   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rsn,omitempty"`
}

type BlockedHoldingDetails1 struct {
	BlckdHldg     Holding1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdHldg"`
	PrtlHldgUnits float64      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtlHldgUnits,omitempty"`
	HldgCertNb    Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HldgCertNb,omitempty"`
}

type BlockedReason1Choice struct {
	Rsn   BlockedReason1Code      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rsn"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type BlockedReason1Code string

type BloombergIdentifier string

type BranchData struct {
	Id      Max35Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Nm      Max35Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	PstlAdr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr,omitempty"`
}

type CHIPSParticipantIdentifier string

type CHIPSUniversalIdentifier string

type CanadianPaymentsARNIdentifier string

type CardType1Code string

type CashAccount26 struct {
	Id             AccountIdentificationAndName3 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	AcctOwnr       PartyIdentification2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOwnr,omitempty"`
	AcctSvcr       PartyIdentification2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr,omitempty"`
	AcctSvcrBrnch  BranchData                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcrBrnch,omitempty"`
	InvstmtAcctTp  InvestmentAccountType1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcctTp,omitempty"`
	AcctOwnrOthrId []GenericIdentification46     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOwnrOthrId,omitempty"`
}

type CashAccountIdentification1Choice struct {
	IBAN     IBANIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IBAN"`
	BBAN     BBANIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BBAN"`
	UPIC     UPICIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 UPIC"`
	DmstAcct SimpleIdentificationInformation `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DmstAcct"`
}

type CertificateType2Code string

type CertificationType1Choice struct {
	Cd    CertificateType2Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Cheque4 struct {
	PyeeId NameAndAddress5 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PyeeId"`
}

type CitizenshipInformation struct {
	Ntlty  string `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ntlty"`
	MnrInd bool   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MnrInd"`
}

type ClearingSystemMemberIdentificationChoice struct {
	USCHU  CHIPSUniversalIdentifier                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USCHU"`
	NZNCC  NewZealandNCCIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NZNCC"`
	IENSC  IrishNSCIdentifier                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IENSC"`
	GBSC   UKDomesticSortCodeIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GBSC"`
	USCH   CHIPSParticipantIdentifier                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USCH"`
	CHBC   SwissBCIdentifier                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CHBC"`
	USFW   FedwireRoutingNumberIdentifier                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USFW"`
	PTNCC  PortugueseNCCIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PTNCC"`
	RUCB   RussianCentralBankIdentificationCodeIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RUCB"`
	ITNCC  ItalianDomesticIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ITNCC"`
	ATBLZ  AustrianBankleitzahlIdentifier                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ATBLZ"`
	CACPA  CanadianPaymentsARNIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CACPA"`
	CHSIC  SwissSICIdentifier                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CHSIC"`
	DEBLZ  GermanBankleitzahlIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DEBLZ"`
	ESNCC  SpanishDomesticInterbankingIdentifier          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ESNCC"`
	ZANCC  SouthAfricanNCCIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ZANCC"`
	HKNCC  HongKongBankIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HKNCC"`
	AUBSBx ExtensiveBranchNetworkIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AUBSBx"`
	AUBSBs SmallNetworkIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AUBSBs"`
}

type CommunicationAddress3 struct {
	Email  Max256Text  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Email,omitempty"`
	Phne   PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Phne,omitempty"`
	Mob    PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Mob,omitempty"`
	FaxNb  PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FaxNb,omitempty"`
	TlxAdr Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TlxAdr,omitempty"`
	URLAdr Max256Text  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 URLAdr,omitempty"`
}

type CommunicationMethod1Code string

type ConductClassification1Code string

type ConsolidatedTapeAssociationIdentifier string

type CountryAndResidentialStatusType1 struct {
	Ctry      CountryCode            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctry"`
	ResdtlSts ResidentialStatus1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ResdtlSts"`
}

type CountryCode string

type CurrencyCode string

type CustomerConductClassification1Choice struct {
	Cd    ConductClassification1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type DateAndDateTimeChoice struct {
	Dt   ISODate     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dt"`
	DtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DtTm"`
}

type DeMinimusApplicable1 struct {
	NewIssePrmssn bool    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NewIssePrmssn"`
	Pctg          float64 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pctg,omitempty"`
}

type DeMinimusNotApplicable1 struct {
	RstrctdPrsnRsn Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RstrctdPrsnRsn"`
}

type DirectDebitMandate4 struct {
	DbtrAcct      AccountIdentificationAndName3             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAcct"`
	Dbtr          PartyIdentification2Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dbtr,omitempty"`
	DbtrTaxIdNb   Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrTaxIdNb,omitempty"`
	DbtrNtlRegnNb Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrNtlRegnNb,omitempty"`
	Cdtr          PartyIdentification2Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cdtr,omitempty"`
	DbtrAgt       FinancialInstitutionIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAgt"`
	DbtrAgtBrnch  BranchData                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAgtBrnch,omitempty"`
	CdtrAgt       FinancialInstitutionIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CdtrAgt,omitempty"`
	CdtrAgtBrnch  BranchData                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CdtrAgtBrnch,omitempty"`
	RegnId        Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnId,omitempty"`
	MndtId        Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MndtId,omitempty"`
}

type DistributionPolicy1Code string

type Document struct {
	AcctOpngInstr AccountOpeningInstructionV04 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOpngInstr"`
}

type DocumentToSend1 struct {
	Tp                  Max140Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Rcpt                PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rcpt"`
	MtdOfTrnsmssn       CommunicationMethod1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MtdOfTrnsmssn"`
	XtndedMtdOfTrnsmssn Extended350Code            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XtndedMtdOfTrnsmssn"`
}

type EuroclearClearstreamIdentifier string

type EventFrequency1Code string

type EventFrequency8Code string

type Exact4AlphaNumericText string

type Extended350Code string

type ExtendedParty6 struct {
	XtndedPtyRole Extended350Code                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XtndedPtyRole"`
	OthrPtyDtls   InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPtyDtls"`
}

type Extension1 struct {
	PlcAndNm Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PlcAndNm"`
	Txt      Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Txt"`
}

type ExtensiveBranchNetworkIdentifier string

type FedwireRoutingNumberIdentifier string

type FinancialInstitutionIdentification3Choice struct {
	NmAndAdr    NameAndAddress5                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
	BIC         BICIdentifier                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BIC"`
	ClrSysMmbId ClearingSystemMemberIdentificationChoice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClrSysMmbId"`
	PrtryId     SimpleIdentificationInformation          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
}

type FinancialInstrument29 struct {
	Id            SecurityIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Nm            Max350Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	SplmtryId     Max35Text                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SplmtryId,omitempty"`
	ClssTp        Max35Text                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClssTp,omitempty"`
	SctiesForm    FormOfSecurity1Code           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctiesForm,omitempty"`
	DstrbtnPlcy   DistributionPolicy1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DstrbtnPlcy,omitempty"`
	PdctGrp       Max140Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PdctGrp,omitempty"`
	BlckdHldgDtls BlockedHoldingDetails1        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdHldgDtls,omitempty"`
}

type FormOfSecurity1Code string

type Frequency20Choice struct {
	Cd    EventFrequency8Code     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type FundCashAccount2Code string

type FundCashAccount3Code string

type FundOrderType1Choice struct {
	Tp    FundOrderType6Code      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type FundOrderType6Code string

type GenderCode string

type GenericIdentification1 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr,omitempty"`
}

type GenericIdentification41 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
}

type GenericIdentification44 struct {
	Id     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Tp     OtherIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Issr   Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr,omitempty"`
	IsseDt ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IsseDt,omitempty"`
	XpryDt ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XpryDt,omitempty"`
}

type GenericIdentification46 struct {
	Id Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Tp OtherIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
}

type GenericIdentification47 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Issr    Max4AlphaNumericText   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr"`
	SchmeNm Max4AlphaNumericText   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
}

type GermanBankleitzahlIdentifier string

type Holding1Code string

type HongKongBankIdentifier string

type IBANIdentifier string

type ISINIdentifier string

type ISODate time.Time

func (t *ISODate) UnmarshalText(text []byte) error {
	return (*xsdDate)(t).UnmarshalText(text)
}
func (t ISODate) MarshalText() ([]byte, error) {
	return xsdDate(t).MarshalText()
}

type ISODateTime time.Time

func (t *ISODateTime) UnmarshalText(text []byte) error {
	return (*xsdDateTime)(t).UnmarshalText(text)
}
func (t ISODateTime) MarshalText() ([]byte, error) {
	return xsdDateTime(t).MarshalText()
}

type ISOYearMonth time.Time

func (t *ISOYearMonth) UnmarshalText(text []byte) error {
	return (*xsdGYearMonth)(t).UnmarshalText(text)
}
func (t ISOYearMonth) MarshalText() ([]byte, error) {
	return xsdGYearMonth(t).MarshalText()
}

type IncomePreference1Code string

type IndividualPerson22 struct {
	NmPrfx           NamePrefix1Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmPrfx,omitempty"`
	GvnNm            Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GvnNm"`
	MddlNm           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MddlNm,omitempty"`
	Nm               Max350Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	NmSfx            Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmSfx,omitempty"`
	Gndr             GenderCode                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Gndr,omitempty"`
	Lang             string                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Lang,omitempty"`
	BirthDt          ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BirthDt"`
	CtryOfBirth      CountryCode                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtryOfBirth,omitempty"`
	PrvcOfBirth      Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrvcOfBirth,omitempty"`
	CityOfBirth      Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CityOfBirth,omitempty"`
	Prfssn           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prfssn,omitempty"`
	TaxtnCtry        CountryCode                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxtnCtry,omitempty"`
	CtryAndResdtlSts CountryAndResidentialStatusType1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtryAndResdtlSts,omitempty"`
	PstlAdr          []PostalAddress3                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr"`
	Ctznsh           []CitizenshipInformation         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctznsh"`
	EmplngCpny       Max140Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EmplngCpny,omitempty"`
	BizFctn          Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BizFctn,omitempty"`
	PmryComAdr       CommunicationAddress3            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr     CommunicationAddress3            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	OthrId           []GenericIdentification44        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrId,omitempty"`
	AddtlRgltryInf   RegulatoryInformation1           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AddtlRgltryInf,omitempty"`
	PltclyXpsdPrsnTp PoliticalExposureType1Choice     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PltclyXpsdPrsnTp,omitempty"`
}

type InformationDistribution1Code string

type Insurance1Code string

type InsuranceType1Choice struct {
	Cd    Insurance1Code          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification41 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Intermediary24 struct {
	Id               PartyIdentification4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Acct             Account2                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Acct,omitempty"`
	WvdTrlrComssnInd bool                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 WvdTrlrComssnInd,omitempty"`
	Role             PartyRole2Choice           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Role,omitempty"`
	PmryComAdr       CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr     CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	NmAndAdr         NameAndAddress4            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr,omitempty"`
}

type InvestmentAccount37 struct {
	Id              AccountIdentification1           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Nm              Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	Dsgnt           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dsgnt,omitempty"`
	Tp              AccountType1Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp,omitempty"`
	OwnrshTp        OwnershipType1Choice             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OwnrshTp"`
	TaxXmptn        TaxExemptionReason1Choice        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxXmptn,omitempty"`
	StmtFrqcy       StatementFrequencyReason1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StmtFrqcy,omitempty"`
	RefCcy          ActiveCurrencyCode               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RefCcy,omitempty"`
	Lang            string                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Lang,omitempty"`
	IncmPref        IncomePreference1Code            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IncmPref,omitempty"`
	RinvstmtDtls    []Reinvestment1                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RinvstmtDtls,omitempty"`
	TaxWhldgMtd     TaxWithholdingMethod2Code        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxWhldgMtd,omitempty"`
	LttrInttDtls    LetterIntent1                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LttrInttDtls,omitempty"`
	AcmltnRghtRef   Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcmltnRghtRef,omitempty"`
	ReqrdSgntriesNb float64                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ReqrdSgntriesNb,omitempty"`
	FndFmlyNm       Max350Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndFmlyNm,omitempty"`
	FndDtls         []FinancialInstrument29          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndDtls,omitempty"`
	RndgDtls        RoundingParameters1              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDtls,omitempty"`
	AcctSvcr        PartyIdentification2Choice       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr,omitempty"`
	BlckdSts        []Blocked1                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdSts,omitempty"`
	AcctUsgTp       AccountUsageType1Choice          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctUsgTp,omitempty"`
	FrgnStsCertfctn Provided1Code                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FrgnStsCertfctn,omitempty"`
	AcctSgntrDtTm   DateAndDateTimeChoice            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSgntrDtTm,omitempty"`
	TxChanlTp       TransactionChannelType1Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TxChanlTp,omitempty"`
	InvstmtAcctCtgy InvestmentAccountCategory1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcctCtgy,omitempty"`
}

type InvestmentAccountCategory1Choice struct {
	Cd    InvestmentAccountCategory1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type InvestmentAccountCategory1Code string

type InvestmentAccountOpeningDetails struct {
	OpngTp     AccountOpeningType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OpngTp"`
	AcctApplId Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctApplId,omitempty"`
}

type InvestmentAccountOwnershipInformation9 struct {
	Pty              Party16Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pty"`
	MnyLndrgChck     MoneyLaunderingCheck1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MnyLndrgChck,omitempty"`
	InvstrPrflVldtn  []PartyProfileInformation3   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstrPrflVldtn,omitempty"`
	OwnrshBnfcryRate float64                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OwnrshBnfcryRate,omitempty"`
	ClntId           Max35Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClntId,omitempty"`
	FsclXmptn        bool                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FsclXmptn,omitempty"`
	SgntryRghtInd    bool                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SgntryRghtInd,omitempty"`
	MiFIDClssfctn    MiFIDClassification1         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MiFIDClssfctn,omitempty"`
	InfDstrbtn       InformationDistribution1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InfDstrbtn,omitempty"`
}

type InvestmentAccountType1Choice struct {
	Cd    FundCashAccount2Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type InvestmentFundCashSettlementInformation7 struct {
	SbcptPmtInstrm    PaymentInstrument11 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SbcptPmtInstrm,omitempty"`
	RedPmtInstrm      PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RedPmtInstrm,omitempty"`
	DvddPmtInstrm     PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DvddPmtInstrm,omitempty"`
	SvgsPlanPmtInstrm PaymentInstrument11 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvgsPlanPmtInstrm,omitempty"`
	IntrstPmtInstrm   PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IntrstPmtInstrm,omitempty"`
}

type InvestmentFundOrder4 struct {
	OrdrRef Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrRef,omitempty"`
	MstrRef Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MstrRef,omitempty"`
}

type InvestmentFundRole6Code string

type InvestmentPlan9 struct {
	Frqcy               Frequency20Choice                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Frqcy"`
	StartDt             ISODate                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	EndDt               ISODate                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EndDt,omitempty"`
	Qty                 UnitsOrAmount1Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Qty"`
	GrssAmtInd          bool                                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GrssAmtInd,omitempty"`
	IncmPref            IncomePreference1Code                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IncmPref,omitempty"`
	InitlNbOfInstlmts   float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InitlNbOfInstlmts,omitempty"`
	TtlNbOfInstlmts     float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TtlNbOfInstlmts,omitempty"`
	RndgDrctn           RoundingDirection1Code                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDrctn,omitempty"`
	SctyDtls            []Repartition2                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctyDtls"`
	CshSttlm            []InvestmentFundCashSettlementInformation7 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshSttlm,omitempty"`
	CtrctRef            Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtrctRef,omitempty"`
	RltdCtrctRef        Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RltdCtrctRef,omitempty"`
	PdctId              Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PdctId,omitempty"`
	SLAChrgAndComssnRef Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SLAChrgAndComssnRef,omitempty"`
	InsrncCover         InsuranceType1Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InsrncCover,omitempty"`
}

type IrishNSCIdentifier string

type ItalianDomesticIdentifier string

type KYCCheckType1Choice struct {
	Cd    KnowYourCustomerCheckType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type KnowYourCustomerCheckType1Code string

type LetterIntent1 struct {
	LttrInttRef Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LttrInttRef"`
	Amt         ActiveCurrencyAnd13DecimalAmount `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Amt,omitempty"`
	StartDt     ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	EndDt       ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EndDt,omitempty"`
}

type MarketPracticeVersion1 struct {
	Nm Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Dt ISOYearMonth `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dt,omitempty"`
	Nb Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nb,omitempty"`
}

type Max140Text string

type Max16Text string

type Max256Text string

type Max350Text string

type Max35Text string

type Max3Text string

type Max4AlphaNumericText string

type Max70Text string

type MessageIdentification1 struct {
	Id      Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	CreDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CreDtTm"`
}

type MiFIDClassification1 struct {
	Clssfctn OrderOriginatorEligibility1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Clssfctn"`
	Nrrtv    Max350Text                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nrrtv,omitempty"`
}

type MoneyLaunderingCheck1Choice struct {
	Cd    MoneyLaunderingCheck1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type MoneyLaunderingCheck1Code string

type NameAndAddress4 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Adr"`
}

type NameAndAddress5 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Adr,omitempty"`
}

type NamePrefix1Choice struct {
	Cd    NamePrefix1Code         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type NamePrefix1Code string

type NewIssueAllocation1 struct {
	Rstrctd        bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rstrctd"`
	XmptPrsnRsn    Max350Text              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XmptPrsnRsn,omitempty"`
	DeMnmsAplbl    DeMinimusApplicable1    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DeMnmsAplbl,omitempty"`
	DeMnmsNotAplbl DeMinimusNotApplicable1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DeMnmsNotAplbl,omitempty"`
}

type NewZealandNCCIdentifier string

type OrderOriginatorEligibility1Code string

type Organisation13 struct {
	Nm             Max140Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Id             PartyIdentification4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Purp           Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Purp,omitempty"`
	TaxtnCtry      CountryCode                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxtnCtry,omitempty"`
	RegnCtry       CountryCode                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnCtry,omitempty"`
	RegnDt         ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnDt,omitempty"`
	TaxIdNb        Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxIdNb,omitempty"`
	NtlRegnNb      Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NtlRegnNb,omitempty"`
	PstlAdr        []PostalAddress3           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr"`
	PmryComAdr     CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr   CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	AddtlRgltryInf RegulatoryInformation1     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AddtlRgltryInf,omitempty"`
}

type OtherIdentification1Choice struct {
	Cd    PersonIdentificationType5Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type OwnershipType1Choice struct {
	Cd    AccountOwnershipType3Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Party16Choice struct {
	Org      Organisation13     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Org"`
	IndvPrsn IndividualPerson22 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IndvPrsn"`
}

type PartyIdentification2Choice struct {
	BICOrBEI AnyBICIdentifier       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BICOrBEI"`
	PrtryId  GenericIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
	NmAndAdr NameAndAddress5        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
}

type PartyIdentification4Choice struct {
	BICOrBEI AnyBICIdentifier       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BICOrBEI"`
	PrtryId  GenericIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
}

type PartyProfileInformation3 struct {
	CertfctnInd         bool                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CertfctnInd,omitempty"`
	VldtngPty           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 VldtngPty,omitempty"`
	ChckngPty           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngPty,omitempty"`
	RspnsblPty          Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RspnsblPty,omitempty"`
	CertTp              CertificationType1Choice             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CertTp,omitempty"`
	ChckngDt            ISODate                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngDt,omitempty"`
	ChckngFrqcy         EventFrequency1Code                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngFrqcy,omitempty"`
	NxtRvsnDt           ISODate                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NxtRvsnDt,omitempty"`
	SlryRg              Max35Text                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SlryRg,omitempty"`
	SrcOfWlth           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SrcOfWlth,omitempty"`
	CstmrCndctClssfctn  CustomerConductClassification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CstmrCndctClssfctn,omitempty"`
	RskLvl              RiskLevel1Choice                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RskLvl,omitempty"`
	KnowYourCstmrChckTp KYCCheckType1Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 KnowYourCstmrChckTp,omitempty"`
}

type PartyRole2Choice struct {
	Cd    InvestmentFundRole6Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type PaymentCard2 struct {
	Tp         CardType1Code              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Nb         Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nb"`
	HldrNm     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HldrNm"`
	StartDt    ISOYearMonth               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	XpryDt     ISOYearMonth               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XpryDt"`
	CardIssrNm Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CardIssrNm,omitempty"`
	CardIssrId PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CardIssrId,omitempty"`
	SctyCd     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctyCd,omitempty"`
	SeqNb      Max3Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SeqNb,omitempty"`
}

type PaymentInstrument11 struct {
	SttlmCcy  ActiveCurrencyCode        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SttlmCcy"`
	PmtInstrm PaymentInstrument17Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtInstrm"`
}

type PaymentInstrument12 struct {
	SttlmCcy  ActiveCurrencyCode        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SttlmCcy"`
	PmtInstrm PaymentInstrument16Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtInstrm"`
	DvddPctg  float64                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DvddPctg,omitempty"`
}

type PaymentInstrument16Choice struct {
	CshAcctDtls  []CashAccount26 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshAcctDtls"`
	ChqDtls      Cheque4         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChqDtls"`
	BkrsDrftDtls Cheque4         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BkrsDrftDtls"`
}

type PaymentInstrument17Choice struct {
	CshAcctDtls []CashAccount26     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshAcctDtls"`
	PmtCardDtls PaymentCard2        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtCardDtls"`
	DrctDbtDtls DirectDebitMandate4 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DrctDbtDtls"`
	Chq         bool                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Chq"`
	BkrsDrft    bool                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BkrsDrft"`
}

type PersonIdentificationType5Code string

type PhoneNumber string

type PoliticalExposureType1Choice struct {
	Cd    PoliticalExposureType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type PoliticalExposureType1Code string

type PortugueseNCCIdentifier string

type PostalAddress1 struct {
	AdrTp       AddressType2Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrTp,omitempty"`
	AdrLine     []Max70Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrLine,omitempty"`
	StrtNm      Max70Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StrtNm,omitempty"`
	BldgNb      Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BldgNb,omitempty"`
	PstCd       Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstCd,omitempty"`
	TwnNm       Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TwnNm,omitempty"`
	CtrySubDvsn Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtrySubDvsn,omitempty"`
	Ctry        CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctry"`
}

type PostalAddress3 struct {
	AdrTp      AddressType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrTp"`
	MlngInd    bool             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MlngInd"`
	RegnAdrInd bool             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnAdrInd"`
	NmAndAdr   NameAndAddress4  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
}

type Provided1Code string

type RICIdentifier string

type Referred1Code string

type ReferredAgent1 struct {
	Rfrd          Referred1Code              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rfrd"`
	RfrdPlcmntAgt PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RfrdPlcmntAgt,omitempty"`
}

type RegulatoryInformation1 struct {
	Sctr  Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Sctr,omitempty"`
	Brnch Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Brnch,omitempty"`
	Grp   Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Grp,omitempty"`
	Othr  Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Othr,omitempty"`
}

type Reinvestment1 struct {
	FndDtls      FinancialInstrument29 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndDtls"`
	ReqdNAVCcy   CurrencyCode          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ReqdNAVCcy,omitempty"`
	RinvstmtPctg float64               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RinvstmtPctg"`
}

type Repartition2 struct {
	Pctg      float64               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pctg"`
	FinInstrm FinancialInstrument29 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FinInstrm"`
	CcyOfPlan CurrencyCode          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CcyOfPlan,omitempty"`
}

type ResidentialStatus1Code string

type RiskLevel1Choice struct {
	Cd    RiskLevel1Code          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification41 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type RiskLevel1Code string

type RoundingDirection1Code string

type RoundingParameters1 struct {
	RndgMdlus float64                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgMdlus,omitempty"`
	RndgDrctn RoundingDirection1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDrctn"`
}

type RussianCentralBankIdentificationCodeIdentifier string

type SecurityIdentification3Choice struct {
	ISIN        ISINIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ISIN"`
	SEDOL       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SEDOL"`
	CUSIP       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CUSIP"`
	RIC         RICIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RIC"`
	TckrSymb    TickerIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TckrSymb"`
	Blmbrg      BloombergIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Blmbrg"`
	CTA         ConsolidatedTapeAssociationIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CTA"`
	QUICK       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 QUICK"`
	Wrtppr      string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Wrtppr"`
	Dtch        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dtch"`
	Vlrn        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Vlrn"`
	SCVM        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SCVM"`
	Belgn       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Belgn"`
	Cmon        EuroclearClearstreamIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cmon"`
	OthrPrtryId AlternateSecurityIdentification1      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPrtryId"`
}

type SimpleIdentificationInformation struct {
	Id Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
}

type SmallNetworkIdentifier string

type SouthAfricanNCCIdentifier string

type SpanishDomesticInterbankingIdentifier string

type StatementFrequencyReason1Choice struct {
	Cd    EventFrequency1Code     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type SwissBCIdentifier string

type SwissSICIdentifier string

type TaxExemptReason1Code string

type TaxExemptionReason1Choice struct {
	Cd    TaxExemptReason1Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type TaxWithholdingMethod2Code string

type TickerIdentifier string

type TransactionChannel2Code string

type TransactionChannelType1Choice struct {
	Cd    TransactionChannel2Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type UKDomesticSortCodeIdentifier string

type UPICIdentifier string

type UnitsOrAmount1Choice struct {
	Amt  ActiveCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Amt"`
	Unit float64                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Unit"`
}

type xsdDate time.Time

func (t *xsdDate) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDate) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
func _unmarshalTime(text []byte, t *time.Time, format string) (err error) {
	s := string(bytes.TrimSpace(text))
	*t, err = time.Parse(format, s)
	if _, ok := err.(*time.ParseError); ok {
		*t, err = time.Parse(format+"Z07:00", s)
	}
	return err
}
func _marshalTime(t time.Time, format string) ([]byte, error) {
	return []byte(t.Format(format + "Z07:00")), nil
}

type xsdDateTime time.Time

func (t *xsdDateTime) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDateTime) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}

type xsdGYearMonth time.Time

func (t *xsdGYearMonth) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01")
}
func (t xsdGYearMonth) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01")
}
func (t xsdGYearMonth) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdGYearMonth) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
// Code generated by main. DO NOT EDIT.

package acmt_001_001_04

import (
	"bytes"
	"encoding/xml"
	"time"
)

type Account2 struct {
	Id       AccountIdentification1     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	AcctSvcr PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr"`
}

type AccountIdentification1 struct {
	Prtry SimpleIdentificationInformation `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type AccountIdentificationAndName3 struct {
	Id CashAccountIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Nm Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
}

type AccountOpeningInstructionV04 struct {
	MsgId            MessageIdentification1                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MsgId"`
	OrdrRef          InvestmentFundOrder4                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrRef,omitempty"`
	PrvsRef          AdditionalReference3                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrvsRef,omitempty"`
	InstrDtls        InvestmentAccountOpeningDetails            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InstrDtls"`
	InvstmtAcct      InvestmentAccount37                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcct"`
	AcctPties        AccountParties9                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctPties"`
	Intrmies         []Intermediary24                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Intrmies,omitempty"`
	Plcmnt           ReferredAgent1                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Plcmnt,omitempty"`
	NewIsseAllcn     NewIssueAllocation1                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NewIsseAllcn,omitempty"`
	SvgsInvstmtPlan  []InvestmentPlan9                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvgsInvstmtPlan,omitempty"`
	WdrwlInvstmtPlan []InvestmentPlan9                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 WdrwlInvstmtPlan,omitempty"`
	CshSttlm         []InvestmentFundCashSettlementInformation7 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshSttlm,omitempty"`
	SvcLvlAgrmt      []DocumentToSend1                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvcLvlAgrmt,omitempty"`
	MktPrctcVrsn     MarketPracticeVersion1                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MktPrctcVrsn,omitempty"`
	Xtnsn            []Extension1                               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Xtnsn,omitempty"`
}

// May be one of NEWA, SUPA
type AccountOpeningType1Code string

// May be one of JOIN, COMO, CUST, SIGL, JOIT, CORP, PART, TRUS, NOMI, NFPO, ONIS, EURE, GOVO, LLCO, RGIC
type AccountOwnershipType3Code string

type AccountParties4Choice struct {
	PmryOwnr   InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryOwnr"`
	Trstee     []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Trstee"`
	CtdnForMnr InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtdnForMnr"`
	Nmnee      InvestmentAccountOwnershipInformation9   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nmnee"`
	JntOwnr    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 JntOwnr"`
}

type AccountParties9 struct {
	PrncplAcctPty AccountParties4Choice                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrncplAcctPty"`
	ScndryOwnr    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryOwnr,omitempty"`
	Bnfcry        []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Bnfcry,omitempty"`
	PwrOfAttny    []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PwrOfAttny,omitempty"`
	LglGuardn     []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LglGuardn,omitempty"`
	SucssrOnDth   []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SucssrOnDth,omitempty"`
	Admstr        []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Admstr,omitempty"`
	OthrPty       []ExtendedParty6                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPty,omitempty"`
	Grntr         []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Grntr,omitempty"`
	Sttlr         []InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Sttlr,omitempty"`
}

type AccountType1Choice struct {
	Cd    FundCashAccount3Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type AccountUsageType1Choice struct {
	Cd    AccountUsageType1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of INVE, SETP
type AccountUsageType1Code string

type ActiveCurrencyAnd13DecimalAmount struct {
	Value float64            `xml:",chardata"`
	Ccy   ActiveCurrencyCode `xml:"Ccy,attr"`
}

type ActiveCurrencyAndAmount struct {
	Value float64            `xml:",chardata"`
	Ccy   ActiveCurrencyCode `xml:"Ccy,attr"`
}

// Must match the pattern [A-Z]{3,3}
type ActiveCurrencyCode string

type AdditionalReference3 struct {
	Ref     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ref"`
	RefIssr PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RefIssr,omitempty"`
	MsgNm   Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MsgNm,omitempty"`
}

// May be one of HOME, BIZZ
type AddressType1Code string

// May be one of ADDR, PBOX, HOME, BIZZ, MLTO, DLVY
type AddressType2Code string

type AlternateSecurityIdentification1 struct {
	Id         Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	DmstIdSrc  CountryCode `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DmstIdSrc"`
	PrtryIdSrc Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryIdSrc"`
}

// Must match the pattern [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}
type AnyBICIdentifier string

// Must match the pattern AT[0-9]{5,5}
type AustrianBankleitzahlIdentifier string

// Must match the pattern [a-zA-Z0-9]{1,30}
type BBANIdentifier string

// Must match the pattern [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}
type BICIdentifier string

type Blocked1 struct {
	OrdrTp []FundOrderType1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrTp"`
	Blckd  bool                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Blckd"`
	Rsn    BlockedReason1Choice   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rsn,omitempty"`
}

type BlockedHoldingDetails1 struct {
	BlckdHldg     Holding1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdHldg"`
	PrtlHldgUnits float64      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtlHldgUnits,omitempty"`
	HldgCertNb    Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HldgCertNb,omitempty"`
}

type BlockedReason1Choice struct {
	Rsn   BlockedReason1Code      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rsn"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of BKRP, CMMT, CNFS, MORT, PLDG, TRPE, TRAN
type BlockedReason1Code string

// Must be at least 1 items long
type BloombergIdentifier string

type BranchData struct {
	Id      Max35Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Nm      Max35Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	PstlAdr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr,omitempty"`
}

// Must match the pattern CP[0-9]{4,4}
type CHIPSParticipantIdentifier string

// Must match the pattern CH[0-9]{6,6}
type CHIPSUniversalIdentifier string

// Must match the pattern CA[0-9]{9,9}
type CanadianPaymentsARNIdentifier string

// May be one of CRDT, DBIT
type CardType1Code string

type CashAccount26 struct {
	Id             AccountIdentificationAndName3 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	AcctOwnr       PartyIdentification2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOwnr,omitempty"`
	AcctSvcr       PartyIdentification2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr,omitempty"`
	AcctSvcrBrnch  BranchData                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcrBrnch,omitempty"`
	InvstmtAcctTp  InvestmentAccountType1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcctTp,omitempty"`
	AcctOwnrOthrId []GenericIdentification46     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOwnrOthrId,omitempty"`
}

type CashAccountIdentification1Choice struct {
	IBAN     IBANIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IBAN"`
	BBAN     BBANIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BBAN"`
	UPIC     UPICIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 UPIC"`
	DmstAcct SimpleIdentificationInformation `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DmstAcct"`
}

// May be one of AMLC, DVLC, DFOR, GOST, IDEN, INCU, LREF, PASS, PRAD, PKIC
type CertificateType2Code string

type CertificationType1Choice struct {
	Cd    CertificateType2Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Cheque4 struct {
	PyeeId NameAndAddress5 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PyeeId"`
}

type CitizenshipInformation struct {
	Ntlty  string `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ntlty"`
	MnrInd bool   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MnrInd"`
}

type ClearingSystemMemberIdentificationChoice struct {
	USCHU  CHIPSUniversalIdentifier                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USCHU"`
	NZNCC  NewZealandNCCIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NZNCC"`
	IENSC  IrishNSCIdentifier                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IENSC"`
	GBSC   UKDomesticSortCodeIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GBSC"`
	USCH   CHIPSParticipantIdentifier                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USCH"`
	CHBC   SwissBCIdentifier                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CHBC"`
	USFW   FedwireRoutingNumberIdentifier                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 USFW"`
	PTNCC  PortugueseNCCIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PTNCC"`
	RUCB   RussianCentralBankIdentificationCodeIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RUCB"`
	ITNCC  ItalianDomesticIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ITNCC"`
	ATBLZ  AustrianBankleitzahlIdentifier                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ATBLZ"`
	CACPA  CanadianPaymentsARNIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CACPA"`
	CHSIC  SwissSICIdentifier                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CHSIC"`
	DEBLZ  GermanBankleitzahlIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DEBLZ"`
	ESNCC  SpanishDomesticInterbankingIdentifier          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ESNCC"`
	ZANCC  SouthAfricanNCCIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ZANCC"`
	HKNCC  HongKongBankIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HKNCC"`
	AUBSBx ExtensiveBranchNetworkIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AUBSBx"`
	AUBSBs SmallNetworkIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AUBSBs"`
}

type CommunicationAddress3 struct {
	Email  Max256Text  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Email,omitempty"`
	Phne   PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Phne,omitempty"`
	Mob    PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Mob,omitempty"`
	FaxNb  PhoneNumber `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FaxNb,omitempty"`
	TlxAdr Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TlxAdr,omitempty"`
	URLAdr Max256Text  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 URLAdr,omitempty"`
}

// May be one of SWMT, SWMX, FAXI, EMAL, PROP
type CommunicationMethod1Code string

// May be one of NSTA, RCLT, STAN
type ConductClassification1Code string

// Must be at least 1 items long
type ConsolidatedTapeAssociationIdentifier string

type CountryAndResidentialStatusType1 struct {
	Ctry      CountryCode            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctry"`
	ResdtlSts ResidentialStatus1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ResdtlSts"`
}

// Must match the pattern [A-Z]{2,2}
type CountryCode string

// Must match the pattern [A-Z]{3,3}
type CurrencyCode string

type CustomerConductClassification1Choice struct {
	Cd    ConductClassification1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type DateAndDateTimeChoice struct {
	Dt   ISODate     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dt"`
	DtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DtTm"`
}

type DeMinimusApplicable1 struct {
	NewIssePrmssn bool    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NewIssePrmssn"`
	Pctg          float64 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pctg,omitempty"`
}

type DeMinimusNotApplicable1 struct {
	RstrctdPrsnRsn Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RstrctdPrsnRsn"`
}

type DirectDebitMandate4 struct {
	DbtrAcct      AccountIdentificationAndName3             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAcct"`
	Dbtr          PartyIdentification2Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dbtr,omitempty"`
	DbtrTaxIdNb   Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrTaxIdNb,omitempty"`
	DbtrNtlRegnNb Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrNtlRegnNb,omitempty"`
	Cdtr          PartyIdentification2Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cdtr,omitempty"`
	DbtrAgt       FinancialInstitutionIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAgt"`
	DbtrAgtBrnch  BranchData                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DbtrAgtBrnch,omitempty"`
	CdtrAgt       FinancialInstitutionIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CdtrAgt,omitempty"`
	CdtrAgtBrnch  BranchData                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CdtrAgtBrnch,omitempty"`
	RegnId        Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnId,omitempty"`
	MndtId        Max35Text                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MndtId,omitempty"`
}

// May be one of DIST, ACCU
type DistributionPolicy1Code string

type Document struct {
	AcctOpngInstr AccountOpeningInstructionV04 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctOpngInstr"`
}

type DocumentToSend1 struct {
	Tp                  Max140Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Rcpt                PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rcpt"`
	MtdOfTrnsmssn       CommunicationMethod1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MtdOfTrnsmssn"`
	XtndedMtdOfTrnsmssn Extended350Code            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XtndedMtdOfTrnsmssn"`
}

// Must be at least 1 items long
type EuroclearClearstreamIdentifier string

// May be one of YEAR, SEMI, QUTR, TOMN, MNTH, TWMN, TOWK, WEEK, DAIL, ADHO, INDA, OVNG, ONDE
type EventFrequency1Code string

// May be one of ADHO, YEAR, DAIL, FOMN, TOMN, TOWK, TYEA, INDA, MNTH, ONDE, OVNG, QUTR, SEMI, TWMN, WEEK
type EventFrequency8Code string

// Must match the pattern [a-zA-Z0-9]{4}
type Exact4AlphaNumericText string

// Must be at least 1 items long
type Extended350Code string

type ExtendedParty6 struct {
	XtndedPtyRole Extended350Code                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XtndedPtyRole"`
	OthrPtyDtls   InvestmentAccountOwnershipInformation9 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPtyDtls"`
}

type Extension1 struct {
	PlcAndNm Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PlcAndNm"`
	Txt      Max350Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Txt"`
}

// Must match the pattern AU[0-9]{6,6}
type ExtensiveBranchNetworkIdentifier string

// Must match the pattern FW[0-9]{9,9}
type FedwireRoutingNumberIdentifier string

type FinancialInstitutionIdentification3Choice struct {
	NmAndAdr    NameAndAddress5                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
	BIC         BICIdentifier                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BIC"`
	ClrSysMmbId ClearingSystemMemberIdentificationChoice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClrSysMmbId"`
	PrtryId     SimpleIdentificationInformation          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
}

type FinancialInstrument29 struct {
	Id            SecurityIdentification3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Nm            Max350Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	SplmtryId     Max35Text                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SplmtryId,omitempty"`
	ClssTp        Max35Text                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClssTp,omitempty"`
	SctiesForm    FormOfSecurity1Code           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctiesForm,omitempty"`
	DstrbtnPlcy   DistributionPolicy1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DstrbtnPlcy,omitempty"`
	PdctGrp       Max140Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PdctGrp,omitempty"`
	BlckdHldgDtls BlockedHoldingDetails1        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdHldgDtls,omitempty"`
}

// May be one of BEAR, REGD
type FormOfSecurity1Code string

type Frequency20Choice struct {
	Cd    EventFrequency8Code     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of CASH, CPFO, CPFS, SRSA
type FundCashAccount2Code string

// May be one of CASH, CPFO, CPFS, SRSA, HEDG
type FundCashAccount3Code string

type FundOrderType1Choice struct {
	Tp    FundOrderType6Code      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of ALLL, REDM, SUBS, SWII, SWIO, TRAI, TRAO
type FundOrderType6Code string

// May be one of MALE, FEMA
type GenderCode string

type GenericIdentification1 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr,omitempty"`
}

type GenericIdentification41 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
}

type GenericIdentification44 struct {
	Id     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Tp     OtherIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Issr   Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr,omitempty"`
	IsseDt ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IsseDt,omitempty"`
	XpryDt ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XpryDt,omitempty"`
}

type GenericIdentification46 struct {
	Id Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Tp OtherIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
}

type GenericIdentification47 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Issr    Max4AlphaNumericText   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Issr"`
	SchmeNm Max4AlphaNumericText   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SchmeNm,omitempty"`
}

// Must match the pattern BL[0-9]{8,8}
type GermanBankleitzahlIdentifier string

// May be one of CERT, NPRH, PRTH
type Holding1Code string

// Must match the pattern HK[0-9]{3,3}
type HongKongBankIdentifier string

// Must match the pattern [a-zA-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}
type IBANIdentifier string

// Must match the pattern [A-Z0-9]{12,12}
type ISINIdentifier string

type ISODate time.Time

func (t *ISODate) UnmarshalText(text []byte) error {
	return (*xsdDate)(t).UnmarshalText(text)
}
func (t ISODate) MarshalText() ([]byte, error) {
	return xsdDate(t).MarshalText()
}

type ISODateTime time.Time

func (t *ISODateTime) UnmarshalText(text []byte) error {
	return (*xsdDateTime)(t).UnmarshalText(text)
}
func (t ISODateTime) MarshalText() ([]byte, error) {
	return xsdDateTime(t).MarshalText()
}

type ISOYearMonth time.Time

func (t *ISOYearMonth) UnmarshalText(text []byte) error {
	return (*xsdGYearMonth)(t).UnmarshalText(text)
}
func (t ISOYearMonth) MarshalText() ([]byte, error) {
	return xsdGYearMonth(t).MarshalText()
}

// May be one of CASH, DRIP
type IncomePreference1Code string

type IndividualPerson22 struct {
	NmPrfx           NamePrefix1Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmPrfx,omitempty"`
	GvnNm            Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GvnNm"`
	MddlNm           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MddlNm,omitempty"`
	Nm               Max350Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	NmSfx            Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmSfx,omitempty"`
	Gndr             GenderCode                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Gndr,omitempty"`
	Lang             string                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Lang,omitempty"`
	BirthDt          ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BirthDt"`
	CtryOfBirth      CountryCode                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtryOfBirth,omitempty"`
	PrvcOfBirth      Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrvcOfBirth,omitempty"`
	CityOfBirth      Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CityOfBirth,omitempty"`
	Prfssn           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prfssn,omitempty"`
	TaxtnCtry        CountryCode                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxtnCtry,omitempty"`
	CtryAndResdtlSts CountryAndResidentialStatusType1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtryAndResdtlSts,omitempty"`
	PstlAdr          []PostalAddress3                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr"`
	Ctznsh           []CitizenshipInformation         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctznsh"`
	EmplngCpny       Max140Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EmplngCpny,omitempty"`
	BizFctn          Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BizFctn,omitempty"`
	PmryComAdr       CommunicationAddress3            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr     CommunicationAddress3            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	OthrId           []GenericIdentification44        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrId,omitempty"`
	AddtlRgltryInf   RegulatoryInformation1           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AddtlRgltryInf,omitempty"`
	PltclyXpsdPrsnTp PoliticalExposureType1Choice     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PltclyXpsdPrsnTp,omitempty"`
}

// May be one of ELEC, PAPR
type InformationDistribution1Code string

// May be one of LIFE, PDIS
type Insurance1Code string

type InsuranceType1Choice struct {
	Cd    Insurance1Code          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification41 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Intermediary24 struct {
	Id               PartyIdentification4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	Acct             Account2                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Acct,omitempty"`
	WvdTrlrComssnInd bool                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 WvdTrlrComssnInd,omitempty"`
	Role             PartyRole2Choice           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Role,omitempty"`
	PmryComAdr       CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr     CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	NmAndAdr         NameAndAddress4            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr,omitempty"`
}

type InvestmentAccount37 struct {
	Id              AccountIdentification1           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Nm              Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	Dsgnt           Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dsgnt,omitempty"`
	Tp              AccountType1Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp,omitempty"`
	OwnrshTp        OwnershipType1Choice             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OwnrshTp"`
	TaxXmptn        TaxExemptionReason1Choice        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxXmptn,omitempty"`
	StmtFrqcy       StatementFrequencyReason1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StmtFrqcy,omitempty"`
	RefCcy          ActiveCurrencyCode               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RefCcy,omitempty"`
	Lang            string                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Lang,omitempty"`
	IncmPref        IncomePreference1Code            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IncmPref,omitempty"`
	RinvstmtDtls    []Reinvestment1                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RinvstmtDtls,omitempty"`
	TaxWhldgMtd     TaxWithholdingMethod2Code        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxWhldgMtd,omitempty"`
	LttrInttDtls    LetterIntent1                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LttrInttDtls,omitempty"`
	AcmltnRghtRef   Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcmltnRghtRef,omitempty"`
	ReqrdSgntriesNb float64                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ReqrdSgntriesNb,omitempty"`
	FndFmlyNm       Max350Text                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndFmlyNm,omitempty"`
	FndDtls         []FinancialInstrument29          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndDtls,omitempty"`
	RndgDtls        RoundingParameters1              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDtls,omitempty"`
	AcctSvcr        PartyIdentification2Choice       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSvcr,omitempty"`
	BlckdSts        []Blocked1                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BlckdSts,omitempty"`
	AcctUsgTp       AccountUsageType1Choice          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctUsgTp,omitempty"`
	FrgnStsCertfctn Provided1Code                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FrgnStsCertfctn,omitempty"`
	AcctSgntrDtTm   DateAndDateTimeChoice            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctSgntrDtTm,omitempty"`
	TxChanlTp       TransactionChannelType1Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TxChanlTp,omitempty"`
	InvstmtAcctCtgy InvestmentAccountCategory1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstmtAcctCtgy,omitempty"`
}

type InvestmentAccountCategory1Choice struct {
	Cd    InvestmentAccountCategory1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of MAND, RETA
type InvestmentAccountCategory1Code string

type InvestmentAccountOpeningDetails struct {
	OpngTp     AccountOpeningType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OpngTp"`
	AcctApplId Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AcctApplId,omitempty"`
}

type InvestmentAccountOwnershipInformation9 struct {
	Pty              Party16Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pty"`
	MnyLndrgChck     MoneyLaunderingCheck1Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MnyLndrgChck,omitempty"`
	InvstrPrflVldtn  []PartyProfileInformation3   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InvstrPrflVldtn,omitempty"`
	OwnrshBnfcryRate float64                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OwnrshBnfcryRate,omitempty"`
	ClntId           Max35Text                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ClntId,omitempty"`
	FsclXmptn        bool                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FsclXmptn,omitempty"`
	SgntryRghtInd    bool                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SgntryRghtInd,omitempty"`
	MiFIDClssfctn    MiFIDClassification1         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MiFIDClssfctn,omitempty"`
	InfDstrbtn       InformationDistribution1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InfDstrbtn,omitempty"`
}

type InvestmentAccountType1Choice struct {
	Cd    FundCashAccount2Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type InvestmentFundCashSettlementInformation7 struct {
	SbcptPmtInstrm    PaymentInstrument11 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SbcptPmtInstrm,omitempty"`
	RedPmtInstrm      PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RedPmtInstrm,omitempty"`
	DvddPmtInstrm     PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DvddPmtInstrm,omitempty"`
	SvgsPlanPmtInstrm PaymentInstrument11 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SvgsPlanPmtInstrm,omitempty"`
	IntrstPmtInstrm   PaymentInstrument12 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IntrstPmtInstrm,omitempty"`
}

type InvestmentFundOrder4 struct {
	OrdrRef Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OrdrRef,omitempty"`
	MstrRef Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MstrRef,omitempty"`
}

// May be one of CACO, CONC, CUST, DATP, DIST, FACT, FIAD, FIAG, FMCO, FNBR, FTAG, INTR, INVE, INVS, PAYI, REGI, TRAG, TRAN
type InvestmentFundRole6Code string

type InvestmentPlan9 struct {
	Frqcy               Frequency20Choice                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Frqcy"`
	StartDt             ISODate                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	EndDt               ISODate                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EndDt,omitempty"`
	Qty                 UnitsOrAmount1Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Qty"`
	GrssAmtInd          bool                                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 GrssAmtInd,omitempty"`
	IncmPref            IncomePreference1Code                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IncmPref,omitempty"`
	InitlNbOfInstlmts   float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InitlNbOfInstlmts,omitempty"`
	TtlNbOfInstlmts     float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TtlNbOfInstlmts,omitempty"`
	RndgDrctn           RoundingDirection1Code                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDrctn,omitempty"`
	SctyDtls            []Repartition2                             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctyDtls"`
	CshSttlm            []InvestmentFundCashSettlementInformation7 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshSttlm,omitempty"`
	CtrctRef            Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtrctRef,omitempty"`
	RltdCtrctRef        Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RltdCtrctRef,omitempty"`
	PdctId              Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PdctId,omitempty"`
	SLAChrgAndComssnRef Max35Text                                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SLAChrgAndComssnRef,omitempty"`
	InsrncCover         InsuranceType1Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 InsrncCover,omitempty"`
}

// Must match the pattern IE[0-9]{6,6}
type IrishNSCIdentifier string

// Must match the pattern IT[0-9]{10,10}
type ItalianDomesticIdentifier string

type KYCCheckType1Choice struct {
	Cd    KnowYourCustomerCheckType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of ENHA, ORDN, SIMP
type KnowYourCustomerCheckType1Code string

type LetterIntent1 struct {
	LttrInttRef Max35Text                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 LttrInttRef"`
	Amt         ActiveCurrencyAnd13DecimalAmount `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Amt,omitempty"`
	StartDt     ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	EndDt       ISODate                          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 EndDt,omitempty"`
}

type MarketPracticeVersion1 struct {
	Nm Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Dt ISOYearMonth `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dt,omitempty"`
	Nb Max35Text    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nb,omitempty"`
}

// Must be at least 1 items long
type Max140Text string

// Must be at least 1 items long
type Max16Text string

// Must be at least 1 items long
type Max256Text string

// Must be at least 1 items long
type Max350Text string

// Must be at least 1 items long
type Max35Text string

// Must be at least 1 items long
type Max3Text string

// Must match the pattern [a-zA-Z0-9]{1,4}
type Max4AlphaNumericText string

// Must be at least 1 items long
type Max70Text string

type MessageIdentification1 struct {
	Id      Max35Text   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
	CreDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CreDtTm"`
}

type MiFIDClassification1 struct {
	Clssfctn OrderOriginatorEligibility1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Clssfctn"`
	Nrrtv    Max350Text                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nrrtv,omitempty"`
}

type MoneyLaunderingCheck1Choice struct {
	Cd    MoneyLaunderingCheck1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of PASS, NOTC, EXEM, CLMO, AUTH, POEP
type MoneyLaunderingCheck1Code string

type NameAndAddress4 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm,omitempty"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Adr"`
}

type NameAndAddress5 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Adr,omitempty"`
}

type NamePrefix1Choice struct {
	Cd    NamePrefix1Code         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of DOCT, MIST, MISS, MADM
type NamePrefix1Code string

type NewIssueAllocation1 struct {
	Rstrctd        bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rstrctd"`
	XmptPrsnRsn    Max350Text              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XmptPrsnRsn,omitempty"`
	DeMnmsAplbl    DeMinimusApplicable1    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DeMnmsAplbl,omitempty"`
	DeMnmsNotAplbl DeMinimusNotApplicable1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DeMnmsNotAplbl,omitempty"`
}

// Must match the pattern NZ[0-9]{6,6}
type NewZealandNCCIdentifier string

// May be one of ELIG, RETL, PROF
type OrderOriginatorEligibility1Code string

type Organisation13 struct {
	Nm             Max140Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nm"`
	Id             PartyIdentification4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id,omitempty"`
	Purp           Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Purp,omitempty"`
	TaxtnCtry      CountryCode                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxtnCtry,omitempty"`
	RegnCtry       CountryCode                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnCtry,omitempty"`
	RegnDt         ISODate                    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnDt,omitempty"`
	TaxIdNb        Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TaxIdNb,omitempty"`
	NtlRegnNb      Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NtlRegnNb,omitempty"`
	PstlAdr        []PostalAddress3           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstlAdr"`
	PmryComAdr     CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmryComAdr,omitempty"`
	ScndryComAdr   CommunicationAddress3      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ScndryComAdr,omitempty"`
	AddtlRgltryInf RegulatoryInformation1     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AddtlRgltryInf,omitempty"`
}

type OtherIdentification1Choice struct {
	Cd    PersonIdentificationType5Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type OwnershipType1Choice struct {
	Cd    AccountOwnershipType3Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type Party16Choice struct {
	Org      Organisation13     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Org"`
	IndvPrsn IndividualPerson22 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 IndvPrsn"`
}

type PartyIdentification2Choice struct {
	BICOrBEI AnyBICIdentifier       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BICOrBEI"`
	PrtryId  GenericIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
	NmAndAdr NameAndAddress5        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
}

type PartyIdentification4Choice struct {
	BICOrBEI AnyBICIdentifier       `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BICOrBEI"`
	PrtryId  GenericIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PrtryId"`
}

type PartyProfileInformation3 struct {
	CertfctnInd         bool                                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CertfctnInd,omitempty"`
	VldtngPty           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 VldtngPty,omitempty"`
	ChckngPty           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngPty,omitempty"`
	RspnsblPty          Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RspnsblPty,omitempty"`
	CertTp              CertificationType1Choice             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CertTp,omitempty"`
	ChckngDt            ISODate                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngDt,omitempty"`
	ChckngFrqcy         EventFrequency1Code                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChckngFrqcy,omitempty"`
	NxtRvsnDt           ISODate                              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NxtRvsnDt,omitempty"`
	SlryRg              Max35Text                            `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SlryRg,omitempty"`
	SrcOfWlth           Max140Text                           `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SrcOfWlth,omitempty"`
	CstmrCndctClssfctn  CustomerConductClassification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CstmrCndctClssfctn,omitempty"`
	RskLvl              RiskLevel1Choice                     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RskLvl,omitempty"`
	KnowYourCstmrChckTp KYCCheckType1Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 KnowYourCstmrChckTp,omitempty"`
}

type PartyRole2Choice struct {
	Cd    InvestmentFundRole6Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

type PaymentCard2 struct {
	Tp         CardType1Code              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Tp"`
	Nb         Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Nb"`
	HldrNm     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 HldrNm"`
	StartDt    ISOYearMonth               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StartDt,omitempty"`
	XpryDt     ISOYearMonth               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 XpryDt"`
	CardIssrNm Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CardIssrNm,omitempty"`
	CardIssrId PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CardIssrId,omitempty"`
	SctyCd     Max35Text                  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SctyCd,omitempty"`
	SeqNb      Max3Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SeqNb,omitempty"`
}

type PaymentInstrument11 struct {
	SttlmCcy  ActiveCurrencyCode        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SttlmCcy"`
	PmtInstrm PaymentInstrument17Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtInstrm"`
}

type PaymentInstrument12 struct {
	SttlmCcy  ActiveCurrencyCode        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SttlmCcy"`
	PmtInstrm PaymentInstrument16Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtInstrm"`
	DvddPctg  float64                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DvddPctg,omitempty"`
}

type PaymentInstrument16Choice struct {
	CshAcctDtls  []CashAccount26 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshAcctDtls"`
	ChqDtls      Cheque4         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ChqDtls"`
	BkrsDrftDtls Cheque4         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BkrsDrftDtls"`
}

type PaymentInstrument17Choice struct {
	CshAcctDtls []CashAccount26     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CshAcctDtls"`
	PmtCardDtls PaymentCard2        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PmtCardDtls"`
	DrctDbtDtls DirectDebitMandate4 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 DrctDbtDtls"`
	Chq         bool                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Chq"`
	BkrsDrft    bool                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BkrsDrft"`
}

// May be one of AREG, CPFA, DRLC, EMID, IDCD, NRIN, OTHR, PASS, POCD, SOCS, SRSA, GUNL
type PersonIdentificationType5Code string

// Must match the pattern \+[0-9]{1,3}-[0-9()+\-]{1,30}
type PhoneNumber string

type PoliticalExposureType1Choice struct {
	Cd    PoliticalExposureType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of NPEX, PEXF, PEXD
type PoliticalExposureType1Code string

// Must match the pattern PT[0-9]{8,8}
type PortugueseNCCIdentifier string

type PostalAddress1 struct {
	AdrTp       AddressType2Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrTp,omitempty"`
	AdrLine     []Max70Text      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrLine,omitempty"`
	StrtNm      Max70Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 StrtNm,omitempty"`
	BldgNb      Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 BldgNb,omitempty"`
	PstCd       Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 PstCd,omitempty"`
	TwnNm       Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TwnNm,omitempty"`
	CtrySubDvsn Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CtrySubDvsn,omitempty"`
	Ctry        CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Ctry"`
}

type PostalAddress3 struct {
	AdrTp      AddressType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 AdrTp"`
	MlngInd    bool             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 MlngInd"`
	RegnAdrInd bool             `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RegnAdrInd"`
	NmAndAdr   NameAndAddress4  `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 NmAndAdr"`
}

// May be one of NPRO, PROV
type Provided1Code string

// Must be at least 1 items long
type RICIdentifier string

// May be one of REFR, NRFR, UKNW
type Referred1Code string

type ReferredAgent1 struct {
	Rfrd          Referred1Code              `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Rfrd"`
	RfrdPlcmntAgt PartyIdentification2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RfrdPlcmntAgt,omitempty"`
}

type RegulatoryInformation1 struct {
	Sctr  Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Sctr,omitempty"`
	Brnch Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Brnch,omitempty"`
	Grp   Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Grp,omitempty"`
	Othr  Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Othr,omitempty"`
}

type Reinvestment1 struct {
	FndDtls      FinancialInstrument29 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FndDtls"`
	ReqdNAVCcy   CurrencyCode          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ReqdNAVCcy,omitempty"`
	RinvstmtPctg float64               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RinvstmtPctg"`
}

type Repartition2 struct {
	Pctg      float64               `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Pctg"`
	FinInstrm FinancialInstrument29 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 FinInstrm"`
	CcyOfPlan CurrencyCode          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CcyOfPlan,omitempty"`
}

// May be one of RESI, PRES, NRES
type ResidentialStatus1Code string

type RiskLevel1Choice struct {
	Cd    RiskLevel1Code          `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification41 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of HIGH, LOWW, MEDM
type RiskLevel1Code string

// May be one of RDUP, RDWN, STAN, DIST
type RoundingDirection1Code string

type RoundingParameters1 struct {
	RndgMdlus float64                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgMdlus,omitempty"`
	RndgDrctn RoundingDirection1Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RndgDrctn"`
}

// Must match the pattern RU[0-9]{9,9}
type RussianCentralBankIdentificationCodeIdentifier string

type SecurityIdentification3Choice struct {
	ISIN        ISINIdentifier                        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 ISIN"`
	SEDOL       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SEDOL"`
	CUSIP       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CUSIP"`
	RIC         RICIdentifier                         `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 RIC"`
	TckrSymb    TickerIdentifier                      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 TckrSymb"`
	Blmbrg      BloombergIdentifier                   `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Blmbrg"`
	CTA         ConsolidatedTapeAssociationIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 CTA"`
	QUICK       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 QUICK"`
	Wrtppr      string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Wrtppr"`
	Dtch        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Dtch"`
	Vlrn        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Vlrn"`
	SCVM        string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 SCVM"`
	Belgn       string                                `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Belgn"`
	Cmon        EuroclearClearstreamIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cmon"`
	OthrPrtryId AlternateSecurityIdentification1      `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 OthrPrtryId"`
}

type SimpleIdentificationInformation struct {
	Id Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Id"`
}

// Must match the pattern AU[0-9]{6,6}
type SmallNetworkIdentifier string

// Must match the pattern ZA[0-9]{6,6}
type SouthAfricanNCCIdentifier string

// Must match the pattern ES[0-9]{8,9}
type SpanishDomesticInterbankingIdentifier string

type StatementFrequencyReason1Choice struct {
	Cd    EventFrequency1Code     `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// Must match the pattern SW[0-9]{3,5}
type SwissBCIdentifier string

// Must match the pattern SW[0-9]{6,6}
type SwissSICIdentifier string

// May be one of NONE, MASA, MISA, SISA, IISA, CUYP, PRYP, ASTR, EMPY, EMCY, EPRY, ECYE, NFPI, NFQP, DECP, IRAC, IRAR, KEOG, PFSP, 401K, SIRA, 403B, 457X, RIRA, RIAN, RCRF, RCIP, EIFP, EIOP
type TaxExemptReason1Code string

type TaxExemptionReason1Choice struct {
	Cd    TaxExemptReason1Code    `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// May be one of WHCO, REPT, CRTF, WTHD, WTRE
type TaxWithholdingMethod2Code string

// Must be at least 1 items long
type TickerIdentifier string

// May be one of FIAD, HOBA, BRAN
type TransactionChannel2Code string

type TransactionChannelType1Choice struct {
	Cd    TransactionChannel2Code `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Cd"`
	Prtry GenericIdentification47 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Prtry"`
}

// Must match the pattern SC[0-9]{6,6}
type UKDomesticSortCodeIdentifier string

// Must match the pattern [0-9]{8,17}
type UPICIdentifier string

type UnitsOrAmount1Choice struct {
	Amt  ActiveCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Amt"`
	Unit float64                 `xml:"urn:iso:std:iso:20022:tech:xsd:acmt.001.001.04 Unit"`
}

type xsdDate time.Time

func (t *xsdDate) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDate) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
func _unmarshalTime(text []byte, t *time.Time, format string) (err error) {
	s := string(bytes.TrimSpace(text))
	*t, err = time.Parse(format, s)
	if _, ok := err.(*time.ParseError); ok {
		*t, err = time.Parse(format+"Z07:00", s)
	}
	return err
}
func _marshalTime(t time.Time, format string) ([]byte, error) {
	return []byte(t.Format(format + "Z07:00")), nil
}

type xsdDateTime time.Time

func (t *xsdDateTime) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDateTime) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}

type xsdGYearMonth time.Time

func (t *xsdGYearMonth) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01")
}
func (t xsdGYearMonth) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01")
}
func (t xsdGYearMonth) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdGYearMonth) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
